AI Agents · บทเรียน

HyDE: Embedding ของเอกสารสมมติ

สร้างคำตอบ 'ในอุดมคติ' ปลอมด้วย LLM สร้าง Embedding แล้วใช้ค้นหา วิธีนี้ดีกว่าการสร้าง Embedding จากคำค้นสั้น ๆ

บทเรียน 2 จาก 414 ขั้นตอน

HyDE: Embedding ของเอกสารสมมติ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

ปัญหาของเอ็มเบดดิงคำค้น

คำค้นของผู้ใช้มักสั้นและมีลักษณะแตกต่างจากเอกสารที่ต้องการเรียกคืนโดยสิ้นเชิง

  • คำค้น: "ซ่อมแป้นพิมพ์ของฉัน"
  • เอกสาร: "หากปุ่มของแป้นพิมพ์เชิงกลติดขัด คุณสามารถทำความสะอาดสวิตช์ด้วยไอโซโพรพิลแอลกอฮอล์ได้..."

เวกเตอร์ทั้งสองมีความห่างกันทางความหมาย การเรียกคืนจึงพลาดเอกสารนั้น

แนวคิด HyDE

HyDE = เอ็มเบดดิงของเอกสารสมมติ (Gao และคณะ 2022)

  1. ขอให้ LLM เขียน "คำตอบในอุดมคติ" ปลอมสำหรับคำค้น
  2. สร้างเอ็มเบดดิงจากคำตอบปลอม (ไม่ใช่จากคำค้น)
  3. ใช้เวกเตอร์นั้นค้นหาในคลังข้อมูลจริง

เหตุใดจึงได้ผล

คำตอบสมมติมีลักษณะเหมือนเอกสารจริง (ใช้คำศัพท์และโครงสร้างคล้ายกัน) เอ็มเบดดิงของคำตอบจึงอยู่ใกล้กับเอ็มเบดดิงของเอกสารจริง ทำให้เรียกคืนเอกสารเหล่านั้นได้อย่างน่าเชื่อถือยิ่งขึ้น

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 เพื่อรีคอล และใช้ตัวเข้ารหัสไขว้เพื่อความแม่นยำ:

  1. HyDE เรียกคืน 50 อันดับแรก
  2. ตัวเข้ารหัสไขว้จัดอันดับใหม่ให้เหลือ 5 อันดับแรก
  3. 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจัดอันดับใหม่ด้วยตัวเข้ารหัสไขว้
  2. HyDE: Embedding ของเอกสารสมมติ
  3. การค้นคืนหลายเวกเตอร์ (ColBERT)
  4. การประเมิน RAG (RAGAS, Recall@K)
← กลับไปที่ AI Agents