การปรับปรุงการค้นหาเอกสาร

Retrieval Augmented Generation (RAG) ด้วย LangChain

Meri Nova

Machine Learning Engineer

R ใน RAG คืออะไร...

เอกสารที่ถูกดึงออกมาจากฐานข้อมูลเวกเตอร์และส่งกลับไปยังแอปพลิเคชันเพื่อสร้างคำตอบ

Retrieval Augmented Generation (RAG) ด้วย LangChain

Dense

เข้ารหัส chunk เป็นเวกเตอร์เดียวที่มีองค์ประกอบไม่เป็นศูนย์

พื้นที่เวกเตอร์แสดงคำที่มีความหมายใกล้เคียงกันจัดกลุ่มไว้ด้วยกัน ได้แก่ Large Language Model, AI และ Machine Learning

  • ข้อดี: จับความหมายเชิงความหมายได้
  • ข้อเสีย: ใช้ทรัพยากรการคำนวณสูง
Retrieval Augmented Generation (RAG) ด้วย LangChain

Dense

เข้ารหัส chunk เป็นเวกเตอร์เดียวที่มีองค์ประกอบไม่เป็นศูนย์

คำที่ฝังในพื้นที่เวกเตอร์โดยคำที่มีความหมายใกล้เคียงกันจะอยู่ใกล้กันมากกว่า

  • ข้อดี: จับความหมายเชิงความหมายได้
  • ข้อเสีย: ใช้ทรัพยากรการคำนวณสูง

Sparse

เข้ารหัสโดยใช้การจับคู่คำ โดยส่วนใหญ่องค์ประกอบเป็นศูนย์

เอกสารที่มีคำที่ระบุปรากฏอยู่ โดยเอกสารที่มีคำครบมากที่สุดจะถูกไฮไลต์

  • ข้อดี: แม่นยำ อธิบายได้ และรองรับคำที่พบได้น้อย
  • ข้อเสีย: ความสามารถในการนำไปใช้ทั่วไป
Retrieval Augmented Generation (RAG) ด้วย LangChain

วิธีการค้นหาแบบ Sparse

TF-IDF: เข้ารหัสเอกสารโดยใช้คำที่ทำให้เอกสารนั้นโดดเด่นเป็นพิเศษ

เอกสารที่มีคำที่ระบุปรากฏอยู่ โดยเอกสารที่มีคำครบมากที่สุดจะถูกไฮไลต์

BM25: ช่วยลดผลกระทบจากคำที่ปรากฏบ่อยครั้งจนทำให้การเข้ารหัสอิ่มตัว

Retrieval Augmented Generation (RAG) ด้วย LangChain

การค้นหาด้วย BM25

from langchain_community.retrievers import BM25Retriever

chunks = [ "Python was created by Guido van Rossum and released in 1991.", "Python is a popular language for machine learning (ML).", "The PyTorch library is a popular Python library for AI and ML." ]
bm25_retriever = BM25Retriever.from_texts(chunks, k=3)
Retrieval Augmented Generation (RAG) ด้วย LangChain

การค้นหาด้วย BM25

results = bm25_retriever.invoke("When was Python created?")
print("Most Relevant Document:")
print(results[0].page_content)
Most Relevant Document:
Python was created by Guido van Rossum and released in 1991.
  • Python was created by Guido van Rossum and released in 1991."
  • "Python is a popular language for machine learning (ML)."
  • "The PyTorch library is a popular Python library for AI/ML."
Retrieval Augmented Generation (RAG) ด้วย LangChain

BM25 ใน RAG

retriever = BM25Retriever.from_documents(
    documents=chunks, 
    k=5
)

chain = ({"context": retriever, "question": RunnablePassthrough()} | prompt | llm | StrOutputParser() )
1 https://www.datacamp.com/blog/what-is-retrieval-augmented-generation-rag
Retrieval Augmented Generation (RAG) ด้วย LangChain

BM25 ใน RAG

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
The RAG application may generate responses that are off-topic or inaccurate.
Retrieval Augmented Generation (RAG) ด้วย LangChain

มาฝึกกันเถอะ!

Retrieval Augmented Generation (RAG) ด้วย LangChain

Preparing Video For Download...