HyDE: Embedding ของเอกสารสมมติ
สร้างคำตอบ 'ในอุดมคติ' ปลอมด้วย LLM สร้าง Embedding แล้วใช้ค้นหา วิธีนี้ดีกว่าการสร้าง Embedding จากคำค้นสั้น ๆ
HyDE: Embedding ของเอกสารสมมติ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
ปัญหาของเอ็มเบดดิงคำค้น
คำค้นของผู้ใช้มักสั้นและมีลักษณะแตกต่างจากเอกสารที่ต้องการเรียกคืนโดยสิ้นเชิง
- คำค้น: "ซ่อมแป้นพิมพ์ของฉัน"
- เอกสาร: "หากปุ่มของแป้นพิมพ์เชิงกลติดขัด คุณสามารถทำความสะอาดสวิตช์ด้วยไอโซโพรพิลแอลกอฮอล์ได้..."
เวกเตอร์ทั้งสองมีความห่างกันทางความหมาย การเรียกคืนจึงพลาดเอกสารนั้น
แนวคิด HyDE
HyDE = เอ็มเบดดิงของเอกสารสมมติ (Gao และคณะ 2022)
- ขอให้ LLM เขียน "คำตอบในอุดมคติ" ปลอมสำหรับคำค้น
- สร้างเอ็มเบดดิงจากคำตอบปลอม (ไม่ใช่จากคำค้น)
- ใช้เวกเตอร์นั้นค้นหาในคลังข้อมูลจริง
เหตุใดจึงได้ผล
คำตอบสมมติมีลักษณะเหมือนเอกสารจริง (ใช้คำศัพท์และโครงสร้างคล้ายกัน) เอ็มเบดดิงของคำตอบจึงอยู่ใกล้กับเอ็มเบดดิงของเอกสารจริง ทำให้เรียกคืนเอกสารเหล่านั้นได้อย่างน่าเชื่อถือยิ่งขึ้น
Implementation
def hyde_search(query, k=5):
# Step 1: hallucinate an answer
hypo_answer = llm.invoke(f'Please write a passage to answer the question: {query}').content
# Step 2: embed it
vec = embed(hypo_answer)
# Step 3: retrieve
return vector_db.query(vec, k=k)คำตอบผิดก็ OK
คำตอบสมมติของ HyDE อาจผิดในเชิงข้อเท็จจริง ซึ่งไม่เป็นไร เราใช้เอ็มเบดดิงของคำตอบนั้นเพื่อการเรียกคืนเท่านั้น จากนั้นจึงใช้เอกสาร REAL ที่เรียกคืนมาเพื่อสร้างคำตอบสุดท้าย
Code Example with LangChain
from langchain.chains import HypotheticalDocumentEmbedder
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
embeddings = HypotheticalDocumentEmbedder.from_llm(
ChatOpenAI(),
OpenAIEmbeddings(),
'web_search' # built-in prompt template
)
vector = embeddings.embed_query('How do I fix a sticky keyboard?')การแลกเปลี่ยนด้านต้นทุน
HyDE มีต้นทุนเป็นการเรียก LLM เพิ่ม 1 ครั้งต่อคำค้น คุ้มค่าเมื่อ:
- ถ้อยคำของคำค้นแตกต่างจากถ้อยคำในเอกสารมาก
- รีคอลของการเรียกคืนข้อมูลเป็นคอขวด
- คลังข้อมูลมีงานเขียนเชิงเทคนิคที่ผู้ใช้มักถอดความ
HyDE หลายตัวอย่าง
สร้างคำตอบสมมติ N คำตอบ สร้างเอ็มเบดดิงของแต่ละคำตอบ เรียกคืน K อันดับแรกของแต่ละคำตอบ แล้วรวมผลลัพธ์เข้าด้วยกัน มีต้นทุนสูงขึ้นแต่ได้รีคอลดีขึ้นสำหรับคำค้นที่ซับซ้อน
hypos = [llm.invoke(...).content for _ in range(3)]
vecs = [embed(h) for h in hypos]
results = set()
for v in vecs:
results.update(vector_db.query(v, k=5))การผสาน HyDE กับการจัดอันดับใหม่
ใช้ HyDE เพื่อรีคอล และใช้ตัวเข้ารหัสไขว้เพื่อความแม่นยำ:
- HyDE เรียกคืน 50 อันดับแรก
- ตัวเข้ารหัสไขว้จัดอันดับใหม่ให้เหลือ 5 อันดับแรก
- LLM ตอบโดยใช้ 5 อันดับแรก
เมื่อใดที่ไม่ควรใช้ HyDE
- คำค้นตรงกับภาษาของเอกสารอยู่แล้ว (เช่น คำถามที่พบบ่อย)
- เส้นทางที่ต้องการเวลาแฝงต่ำ
- คลังข้อมูลขนาดเล็กมากจนการเรียกคืนแบบพื้นฐานทำงานได้ดี
HyDE สำหรับโค้ด
สำหรับการค้นหาโค้ด ให้สร้างภาพหลอนของฟังก์ชันที่ผู้ใช้กำลังค้นหา สร้างเอ็มเบดดิง แล้วเรียกคืนฟังก์ชันจริง
code_hypo = llm.invoke(f'Write the Python function that does: {user_request}').content
results = code_index.search(embed(code_hypo))รูปแบบอื่น: การพรอมต์แบบถอยกลับหนึ่งขั้น
เทคนิคที่เกี่ยวข้องคือ ขอให้โมเดลสร้างคำถามทั่วไปที่กว้างขึ้นก่อน ("ฉันจะทำความสะอาดแป้นพิมพ์ได้อย่างไร" -> "วิธีทำความสะอาดทั่วไปใดใช้ได้กับแป้นพิมพ์เชิงกล") จากนั้นสร้างเอ็มเบดดิงของคำถามนั้นแล้วจึงเรียกคืนข้อมูล
เหตุผลที่ HyDE ได้ผล
อะไรทำให้ HyDE เรียกคืนข้อมูลได้ดีกว่าการสร้างเอ็มเบดดิงจากคำค้นดิบ
สรุปทบทวน
HyDE: สร้างภาพหลอนของคำตอบ สร้างเอ็มเบดดิงจาก THAT แล้วค้นหา มีต้นทุนเป็นการเรียก LLM เพิ่มหนึ่งครั้ง แต่ช่วยปรับปรุงการเรียกคืนสำหรับคำค้นที่ยาก มีการถอดความ หรือเป็นเชิงเทคนิค
เรียนรู้ AI Agents ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 60
- บทเรียน
- 239
คำถามที่พบบ่อย
บทเรียน “HyDE: Embedding ของเอกสารสมมติ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “HyDE: Embedding ของเอกสารสมมติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “HyDE: Embedding ของเอกสารสมมติ”
สร้างคำตอบ 'ในอุดมคติ' ปลอมด้วย LLM สร้าง Embedding แล้วใช้ค้นหา วิธีนี้ดีกว่าการสร้าง Embedding จากคำค้นสั้น ๆ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “HyDE: Embedding ของเอกสารสมมติ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การจัดอันดับใหม่ด้วยตัวเข้ารหัสไขว้
- HyDE: Embedding ของเอกสารสมมติ
- การค้นคืนหลายเวกเตอร์ (ColBERT)
- การประเมิน RAG (RAGAS, Recall@K)