RAG patterns (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

RAG-паттерны (อังกฤษ: RAG Patterns) — คือชุดของแนวทางสถาปัตยกรรมและระเบียบวิธีสำหรับการสร้างระบบ Retrieval-Augmented Generation (RAG) รูปแบบเหล่านี้ได้รับการออกแบบมาเพื่อแก้ปัญหาพื้นฐานของโมเดลภาษาขนาดใหญ่ (LLM) เช่น การสร้างข้อมูลเท็จ (hallucination) ความล้าสมัยของความรู้ และการขาดความเฉพาะเจาะจงในโดเมน โดยบูรณาการ LLM เข้ากับแหล่งข้อมูลภายนอกที่เข้าถึงได้แบบไดนามิก[1] วิวัฒนาการของ RAG ได้ดำเนินมาจากไปป์ไลน์เชิงเส้นแบบง่ายไปสู่ระบบโมดูลาร์และระบบเอเจนต์ที่ซับซ้อน[2]

รูปแบบหลักของ RAG

ด้วยการพัฒนาของเทคโนโลยี จึงได้เกิด RAG-паттерны หลายรูปแบบ โดยแต่ละรูปแบบแก้ปัญหาเฉพาะเจาะจงและมีการแลกเปลี่ยนระหว่างคุณภาพ ความเร็ว และต้นทุนที่แตกต่างกัน

  • Classic RAG (RAG แบบคลาสสิก) — แนวทางพื้นฐาน โดยคำค้นหาของผู้ใช้จะถูกแปลงเป็น vector เพื่อค้นหาส่วนข้อมูล (chunk) ที่เกี่ยวข้องในฐานข้อมูล vector; chunk ที่พบจะถูกส่งเข้า LLM พร้อมกับคำถามเพื่อสร้างคำตอบ[1]
  • Multi‑Query RAG (การค้นหาหลายคำค้น) — LLM สร้างตัวแปรคำค้นหาที่ถูกกำหนดใหม่หรือขยายความหลายรูปแบบจากคำค้นหาต้นฉบับ; การค้นหาจะดำเนินการตามตัวแปรทั้งหมดและรวมผลลัพธ์เข้าด้วยกัน ซึ่งช่วยเพิ่มความครอบคลุม (recall)[3]
  • HyDE (Hypothetical Document Expansion) — สำหรับการเอาชนะ "ช่องว่างทางความหมาย" ระหว่างคำค้นหาสั้นและเอกสารยาว LLM จะสร้างเอกสาร "สมมุติ" เป็นคำตอบก่อน จากนั้น embedding ของเอกสารนั้นจะถูกใช้ในการค้นหา ซึ่งมักช่วยปรับปรุงคุณภาพการดึงข้อมูล[4]
  • Hybrid Retrieval (การค้นหาแบบผสม) — การรวมการค้นหาเชิงความหมาย (vector) และการค้นหาเชิงคำ (BM25) รูปแบบผสมได้กลายเป็นมาตรฐานสำหรับระบบในระดับ production: การค้นหา vector ครอบคลุมความสอดคล้องเชิงความหมาย ขณะที่ BM25 ค้นพบคำที่แม่นยำ/ID/ตัวย่อ; ผลลัพธ์จะถูกรวมด้วย fusion[5][6][7]
  • Re‑ranking (การจัดอันดับเพิ่มเติม) — กระบวนการสองขั้นตอน: ตัวดึงข้อมูลที่รวดเร็วจะส่งชุดตัวเลือก (เช่น top-100) จากนั้น cross-encoder (หรือตัว rerank อื่น) จะคำนวณความเกี่ยวข้องใหม่และคัดเลือกตัวเลือกที่ดีที่สุด (เช่น top-5) สำหรับ LLM[8][9]
  • Query Routing (การกำหนดเส้นทางคำค้นหา) — ในระบบที่มีแหล่งข้อมูลหลายแหล่งที่แตกต่างกัน (index/ฐานข้อมูล/API ต่างๆ) คำค้นหาจะถูกส่งไปยังแหล่งข้อมูลที่ดีที่สุดโดยใช้ router (LLM-selector หรือ classifier); รวมถึง fallback strategy[10]
  • Agentic/Web RAG (RAG แบบเอเจนต์) — LLM ทำหน้าที่เป็นเอเจนต์: แยกย่อยคำถามที่ซับซ้อน วางแผนการทำซ้ำ และใช้เครื่องมือ (การค้นหา vector, การค้นหาบนเว็บ) พร้อมการตอบรับ การนำไปใช้งานทั่วไปคือกระบวนทัศน์ ReAct[11]; สำหรับการรวบรวมข้อมูลบนเว็บและการอ้างอิงที่บังคับ โปรดดู WebGPT[12]

กระบวนทัศน์ที่เกี่ยวข้องและกำลังพัฒนา

  • GraphRAG (RAG แบบกราฟ) — ใช้กราฟความรู้เป็นแหล่งข้อมูลและกลไกการเลือก context; การค้นหาดำเนินการตามโครงสร้างความสัมพันธ์ระหว่าง entity และข้อความ ซึ่งเพิ่มความสามารถในการตีความและคุณภาพสำหรับคำถาม multi-hop[13][14]
  • MM‑RAG (RAG แบบหลายโมดัล) — การทำงานกับแหล่งข้อมูลข้อความและภาพ (สแกน/ไดอะแกรม/ตาราง) ตัวอย่าง: VisRAG แสดงให้เห็นการดึงข้อมูลและการสร้างที่เน้น VLM บนเอกสารหลายโมดัล[15]
  • Packaging & Context Handling (การบรรจุ context) — วิธีการบูรณาการ chunk ที่พบเข้าใน prompt: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16]

ตารางเปรียบเทียบรูปแบบ

การเปรียบเทียบ RAG-паттернов หลัก
รูปแบบ เมื่อใดควรนำไปใช้ ผลกระทบต่อคุณภาพ ต้นทุน / ความหน่วง ความเสี่ยงและข้อจำกัด
Classic RAG PoC และ Q&A แบบง่ายบนฐานข้อมูลที่เป็นเนื้อเดียวกัน ระดับพื้นฐาน; ขึ้นอยู่กับ embedding อย่างมาก[1] ต่ำ ความไวต่อการกำหนดคำ; ความเสี่ยงของ context ที่ไม่เกี่ยวข้อง
Hybrid Retrieval ส่วนใหญ่ในสถานการณ์ production; มีโค้ด/ตัวย่อ/ID จำนวนมาก เพิ่มความครอบคลุม; ครอบคลุมคำที่แม่นยำ[5][6][7] ต่ำ/ปานกลาง การปรับน้ำหนัก fusion; สอง index
Re‑ranking สำคัญเมื่อต้องการความแม่นยำสูง เพิ่ม precision บน top-k อย่างมีนัยสำคัญ[8][9] ปานกลาง/สูง ความหน่วง/ต้นทุนเพิ่มเติม
Multi‑Query คำค้นหาสั้น/หลายแง่มุม เพิ่ม recall[3] ปานกลาง การกำหนดใหม่ที่ซ้ำซ้อน/มีสัญญาณรบกวน
HyDE คำค้นหาสั้น/คลุมเครือที่มี "ช่องว่างทางความหมาย" ขนาดใหญ่ ปรับปรุงคุณภาพการดึงข้อมูล zero‑shot[4] ปานกลาง ขึ้นอยู่กับคุณภาพของข้อความ "สมมุติ"
Query Routing แหล่งข้อมูลหลายแหล่ง (ฐานเอกสาร, SQL, API, เว็บ) เพิ่มความเกี่ยวข้องด้วยการเลือกแหล่งข้อมูลที่ถูกต้อง[10] ปานกลาง ข้อผิดพลาดในการกำหนดเส้นทาง = การค้นหาล้มเหลว
Agentic/Web RAG คำค้นหาที่ซับซ้อน เชิงสืบค้น หลายขั้นตอน แก้ปัญหาที่อยู่นอกเหนือไปป์ไลน์เชิงเส้น[11][12] สูง ความซับซ้อน, ความเสี่ยงของการวนซ้ำไม่สิ้นสุด; จำเป็นต้องมี guardrail

การนำไปใช้งานจริงและสถาปัตยกรรม

ขั้นตอนการนำไปใช้งาน

  1. Proof of Concept (PoC): เริ่มต้นด้วย Classic RAG บนชุดข้อมูลที่จำกัดแต่เป็นตัวแทน เพื่อตรวจสอบคุณภาพ embedding และการดึงข้อมูลพื้นฐาน[1]
  2. Minimum Viable Product (MVP): นำ Hybrid Retrieval และ Re‑ranking ไปใช้งานเป็นอัตราส่วน "ความพยายาม/ผลลัพธ์" ที่ดีที่สุด[5][8]
  3. Production: เพิ่มการแปลงคำค้นหา (HyDE, Multi‑Query) และ Query Routing หากจำเป็น; ตั้งค่า observability (การบันทึก log การดึงข้อมูล/rerank/คำตอบ) และการทดสอบ A/B[3][10]

องค์ประกอบหลัก

  • Chunking (การแบ่งส่วนข้อมูล): หนึ่งในปัจจัยที่วิกฤตที่สุดสำหรับคุณภาพ การแบ่งขนาดคงที่แบบไร้เดียงสามักจะทำลายหน่วยความหมาย แนะนำให้ใช้ splitter ที่เน้นโครงสร้าง (ตาม markup) หรือแบบ recursive (ย่อหน้า → ประโยค → คำ)[17][18]
  • Embedding และ metadata: จัดเก็บ document_id, หน้า/ส่วน, หัวข้อ, วันที่ พร้อมกับแต่ละ chunk; สิ่งนี้จำเป็นสำหรับการกรองและการอ้างอิงแหล่งที่มาอย่างถูกต้อง
  • Hybrid retrieval และ rerank: ใช้ BM25+vector พร้อม fusion (หรือ RRF) จากนั้น cross-encoder สำหรับการจัดอันดับใหม่บนกลุ่มตัวเลือกขนาดเล็ก[5][6][8]
  • การบรรจุ context: เลือก Map‑Reduce, Refine หรือ Tree‑of‑Chunks สำหรับคลังข้อมูลขนาดใหญ่[16][18]

ข้อผิดพลาดทั่วไป (anti-pattern)

  • เฉพาะการค้นหา vector โดยไม่มี BM25 → ล้มเหลวกับโค้ด/ID/ตัวย่อ[5][7]
  • Chunk ที่ใหญ่/เล็กเกินไป → สูญเสีย context หรือ embedding "เจือจาง"[17]
  • ไม่มี rerank ใน production → LLM ได้รับ context ที่มีสัญญาณรบกวน[8]
  • ไม่มี observability และการติดตามแหล่งที่มา → ไม่สามารถวิเคราะห์สาเหตุของข้อผิดพลาด (ดูการประเมิน RAG)

การประเมินคุณภาพและ metric

การประเมินดำเนินการในระดับ retrieval (offline) และ end‑to‑end (การสร้าง)

Metric ของ retriever

  • Hit Rate, Recall@k, MRR — ความครอบคลุมและตำแหน่งของเอกสารที่เกี่ยวข้อง
  • Context Precision & Recall — ความสะอาดของ context ที่ดึงออกมาจาก "สัญญาณรบกวน" และความครอบคลุมทุกสิ่งที่จำเป็น (นำไปใช้งานใน RAGAS)[19]

Metric ของ generator (end‑to‑end)

  • Faithfulness / Groundedness — ความสอดคล้องของคำตอบกับ context ที่ให้ไว้
  • Answer Relevancy (ความเกี่ยวข้องของคำตอบ) — ความสอดคล้องกับคำถามต้นฉบับ

สำหรับการทำ metric อัตโนมัติ จะใช้ open-source framework ได้แก่: RAGAS, TruLens (RAG triad: context relevance, groundedness, answer relevance), DeepEval[20][21]

ดูเพิ่มเติม

  • Retrieval-Augmented Generation (RAG)
  • ฐานข้อมูล vector
  • Embedding
  • AI-agent
  • GraphRAG
  • MM-RAG
  • การประเมินและ benchmark LLM

วรรณกรรม

  • Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
  • Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
  • Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels (HyDE). ACL 2023. ACL Anthology; arXiv:2212.10496.
  • Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
  • Weaviate Docs. Hybrid search (BM25+Vector). [1].
  • Qdrant Docs. Hybrid Queries. [2].
  • Milvus Docs. Full‑Text Search / Hybrid Search. [3] / [4].
  • LangChain Docs. MultiQueryRetriever. [5].
  • Cohere Docs. Rerank — best practices. [6].
  • LlamaIndex Docs. Routing (query routers/selectors). [7].
  • Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR. arXiv:2210.03629.
  • Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
  • Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. (2024). [8].
  • Microsoft Research. Project GraphRAG. (2024). [9].
  • Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594.
  • Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
  • Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). [10].
  • TruLens Docs. RAG Triad. [11].
  • DeepEval (GitHub). The LLM Evaluation Framework. [12].
  • LangChain Docs. RecursiveCharacterTextSplitter. [13].
  • LlamaIndex Docs. HierarchicalNodeParser; Response Synthesis (Tree/Refine). [14]; [15].

หมายเหตุ

  1. 1.0 1.1 1.2 1.3 Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
  2. Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
  3. 3.0 3.1 3.2 LangChain Docs. MultiQueryRetriever. https://python.langchain.com/docs/how_to/MultiQueryRetriever/
  4. 4.0 4.1 Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels. ACL 2023. arXiv:2212.10496; ACL Anthology: 2023.acl‑long.99.
  5. 5.0 5.1 5.2 5.3 5.4 Weaviate Docs. Hybrid search (BM25+Vector). https://docs.weaviate.io/weaviate/concepts/search/hybrid-search
  6. 6.0 6.1 6.2 Qdrant Docs. Hybrid Queries. https://qdrant.tech/documentation/concepts/hybrid-queries/
  7. 7.0 7.1 7.2 Milvus Docs. Full‑Text Search и Hybrid Search. https://milvus.io/docs/full-text-search.md; https://milvus.io/docs/hybrid_search_with_milvus.md
  8. 8.0 8.1 8.2 8.3 8.4 Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
  9. 9.0 9.1 Cohere Docs. Rerank — best practices. https://docs.cohere.com/docs/reranking-best-practices
  10. 10.0 10.1 10.2 LlamaIndex Docs. Routing (query routers/selectors). https://docs.llamaindex.ai/en/stable/module_guides/querying/router/
  11. 11.0 11.1 Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023. arXiv:2210.03629.
  12. 12.0 12.1 Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
  13. Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. 2024. https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
  14. Microsoft Research. Project GraphRAG. https://www.microsoft.com/en-us/research/project/graphrag/
  15. Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594; OpenReview: zG459X3Xge.
  16. 16.0 16.1 Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
  17. 17.0 17.1 LangChain Docs. RecursiveCharacterTextSplitter. https://python.langchain.com/docs/how_to/recursive_text_splitter/
  18. 18.0 18.1 LlamaIndex Docs. HierarchicalNodeParser и Tree Summarization. https://docs.llamaindex.ai/en/stable/api/llama_index.core.node_parser.HierarchicalNodeParser.html; https://docs.llamaindex.ai/en/stable/examples/low_level/response_synthesis/
  19. Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). https://aclanthology.org/2024.eacl-demo.16/
  20. TruLens Docs. RAG Triad. https://www.trulens.org/getting_started/core_concepts/rag_triad/
  21. DeepEval (GitHub). https://github.com/confident-ai/deepeval