การสร้าง RAG แบบง่ายด้วย FAISS หรือ Chroma
เขียน Python 40 บรรทัดเพื่อสร้าง Embedding ของคำค้น ค้นหาส่วนที่ใกล้ที่สุด K อันดับแรก ใส่ลงในพรอมต์ และถาม LLM
การสร้าง RAG แบบง่ายด้วย FAISS หรือ Chroma เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
RAG 40 บรรทัด
ตอนนี้คุณมีองค์ประกอบทั้งหมดแล้ว เราจะประกอบองค์ประกอบเหล่านั้นเป็น RAG แบบง่ายที่ทำงานได้บนชุดเอกสารขนาดเล็ก
Step 1: Install
# pip install openai chromadbStep 2: Sample Corpus
docs = [
'Python is a high-level interpreted programming language created by Guido van Rossum in 1991.',
'Pizza is a savory dish of Italian origin consisting of a round flat base of dough.',
'The Eiffel Tower is a wrought-iron lattice tower in Paris, France, completed in 1889.',
'NumPy is a Python library used for working with arrays and numerical computing.',
'The Great Wall of China is a series of fortifications built across northern China.'
]
print(f"Loaded {len(docs)} documents")
for i, d in enumerate(docs):
print(f"{i+1}. {d[:50]}...")
Step 3: Set Up Chroma
import chromadb
from openai import OpenAI
client = chromadb.Client()
collection = client.create_collection('demo')
openai_client = OpenAI()Step 4: Embed and Store
embed_response = openai_client.embeddings.create(
model='text-embedding-3-small',
input=docs
)
vectors = [d.embedding for d in embed_response.data]
collection.add(
ids=[f'd{i}' for i in range(len(docs))],
embeddings=vectors,
documents=docs
)Step 5: Embed the Query
query = 'Tell me about Python programming'
query_vec = openai_client.embeddings.create(
model='text-embedding-3-small',
input=query
).data[0].embeddingStep 6: Retrieve Top-K
results = collection.query(
query_embeddings=[query_vec],
n_results=2
)
retrieved = results['documents'][0]
print(retrieved)
# ['Python is a high-level...', 'NumPy is a Python library...']Step 7: Build the RAG Prompt
context = '\n'.join(f'- {chunk}' for chunk in retrieved)
prompt = f'''
Using only the context below, answer the question. If unknown, say so.
Context:
{context}
Question: {query}
'''Step 8: Call the LLM
response = openai_client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
temperature=0,
)
print(response.choices[0].message.content)ทางเลือกแทน FAISS
หากต้องการทำงานภายในเครื่องทั้งหมดโดยไม่มีเซิร์ฟเวอร์ฐานข้อมูล FAISS จะยิ่งง่ายกว่า:
import faiss
import numpy as np
index = faiss.IndexFlatIP(1536) # inner product, normalised vectors
index.add(np.array(vectors).astype('float32'))
D, I = index.search(np.array([query_vec]).astype('float32'), k=2)
retrieved = [docs[i] for i in I[0]]ข้อจำกัดของ RAG แบบง่ายนี้
- ไม่มีการแบ่งเป็นส่วนย่อย — ใช้ได้เฉพาะกับเอกสารสั้น ๆ
- ไม่มีการจัดอันดับใหม่
- ไม่มีการกรองข้อมูลเมตา
- ไม่มีการประเมิน
เราจะแก้ไขทั้งหมดนี้ในหลักสูตรถัด ๆ ไป
ต้นทุนต่อคำค้นหา
สำหรับคำค้นหาแต่ละรายการที่คุณส่ง:
- การเรียกสร้างเวกเตอร์ฝังตัว 1 ครั้ง (ประมาณ 0.00002 ดอลลาร์)
- การสร้างคำตอบสนทนา 1 ครั้งพร้อมบริบทประมาณ 500 โทเค็น (ประมาณ 0.0001 ดอลลาร์)
รวมแล้วประมาณหนึ่งในหนึ่งร้อยเซนต์ต่อคำถาม
นำไปใช้งานแล้วปรับปรุงต่อ
RAG ความยาวเพียง 40 บรรทัดนี้ทำได้ดีกว่าแชตบอตส่วนใหญ่ที่ไม่มีบริบทแล้ว สำหรับการถาม-ตอบข้อเท็จจริงจากข้อมูลของคุณ นำไปใช้งานจริง คอยดูว่าผู้ใช้ทำให้ระบบล้มเหลวอย่างไร แล้วค่อยเพิ่มเทคนิคขั้นสูงในจุดที่จำเป็นที่สุด
Top-K ของ RAG แบบพื้นฐาน
การดึงข้อมูลแบบ "top-K" หมายถึงอะไร
สรุปทบทวน
คุณสร้าง RAG แล้ว ต่อไปเราจะดูฐานข้อมูลเวกเตอร์ที่ขยายระบบนี้ให้รองรับได้มากกว่าแล็ปท็อปเครื่องเดียว
คำถามที่พบบ่อย
บทเรียน “การสร้าง RAG แบบง่ายด้วย FAISS หรือ Chroma” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้าง RAG แบบง่ายด้วย FAISS หรือ Chroma” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้าง RAG แบบง่ายด้วย FAISS หรือ Chroma”
เขียน Python 40 บรรทัดเพื่อสร้าง Embedding ของคำค้น ค้นหาส่วนที่ใกล้ที่สุด K อันดับแรก ใส่ลงในพรอมต์ และถาม LLM คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้าง RAG แบบง่ายด้วย FAISS หรือ Chroma” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- RAG แก้ปัญหาอะไร (จุดตัดความรู้ ภาพหลอน)
- กลยุทธ์การแบ่งเป็นส่วน (คงที่ ประโยค เชิงความหมาย)
- การสร้างดัชนีชุดเอกสาร
- การสร้าง RAG แบบง่ายด้วย FAISS หรือ Chroma