?令人敬畏的檢索增強生成(RAG)
該儲存庫包含精選的精彩清單以及有關生成式人工智慧中檢索增強生成(RAG)應用程式的一般資訊。
檢索增強生成(RAG)是產生人工智慧中的一種技術,從外部來源檢索額外的上下文以豐富大型語言模型(LLM)的生成過程。這種方法允許法學碩士納入他們僅從預訓練資料中可能缺乏的最新、特定或敏感資訊。
內容
- RAG 的一般訊息
- 方法
- ?促進 RAG 的框架
- 技巧
- 指標
- ?資料庫
RAG 的一般訊息
在傳統的 RAG 方法中,採用基本框架來檢索豐富 LLM 提示上下文的文件。例如,當查詢翻新房屋的材料時,法學碩士可能擁有有關翻新的一般知識,但缺乏特定房屋的具體細節。實施 RAG 架構可以快速搜尋和檢索相關文件(例如藍圖),以提供更多客製化的回應。這確保了法學碩士將具體資訊納入改造需求,從而提高其答案的準確性。
典型的 RAG 實施遵循以下關鍵步驟:
- 劃分知識庫:將文件語料庫分成更小的、可管理的區塊。
- 建立嵌入:應用嵌入模型將這些文字區塊轉換為向量嵌入,捕捉其語義。
- 儲存在向量資料庫中:將嵌入保存在向量資料庫中,從而實現基於語義相似性的快速檢索。
- 處理使用者查詢:使用應用於文字區塊的相同模型將使用者的查詢轉換為嵌入。
- 檢索相關資料:根據語意相似性在向量資料庫中搜尋與查詢嵌入緊密匹配的嵌入。
- 增強提示:將最相關的文本區塊納入法學碩士的提示中,為生成回應提供有價值的上下文。
- 產生回應: LLM 利用增強提示來提供準確且針對使用者查詢量身定制的回應。
方法
RAG 實現的複雜性各不相同,從簡單的文件檢索到整合迭代回饋循環和特定領域增強功能的高級技術。方法可能包括:
- 修正 RAG (CRAG):在整合到 LLM 回應之前修正或細化檢索到的資訊的方法。
- 檢索增強微調 (RAFT):專門針對增強的檢索和產生任務微調 LLM 的技術。
- 自反射 RAG:根據模型性能回饋動態調整檢索策略的模型。
- RAG Fusion:結合多種檢索方法以改善情境整合的技術。
- 時間增強檢索(TAR):在檢索過程中考慮時間敏感資料。
- Plan-then-RAG (PlanRAG):涉及對複雜任務執行 RAG 之前的規劃階段的策略。
- GraphRAG:一種使用知識圖來增強上下文整合和推理的結構化方法。
- FLARE - 一種結合主動檢索增強生成來提高回應品質的方法。
- 上下文檢索 - 透過在檢索之前向文件區塊添加相關上下文來改善檢索,從而增強從大型知識庫檢索到的資訊的相關性。
?促進 RAG 的框架
- Haystack - LLM 編排框架,用於建立可自訂的、可用於生產的 LLM 應用程式。
- LangChain - 與法學碩士合作的通用框架。
- Semantic Kernel - Microsoft 的 SDK,用於開發生成式 AI 應用程式。
- LlamaIndex - 用於將自訂資料來源連接到 LLM 的框架。
- Cognita - 用於建立模組化和生產就緒應用程式的開源 RAG 框架。
- Verba - 開箱即用的 RAG 開源應用程式。
- Mastra - 用於建立 AI 應用程式的 Typescript 框架。
技巧
資料清洗
- 資料清理技術:用於細化輸入資料並提高模型效能的預處理步驟。
提示
- 策略
- 標記和標籤:為檢索到的資料添加語義標籤或標籤以增強相關性。
- 原因與行動 (ReAct) (ReAct):整合推理功能,根據檢索到的上下文來指導 LLM 回應。
- 思維鏈(CoT):鼓勵模型在提供答案之前逐步思考問題。
- 驗證鏈(CoVe):提示模型驗證其推理的每一步的準確性。
- 自洽:產生多個推理路徑並選擇最一致的答案。
- 零樣本提示:設計無需任何範例即可指導模型的提示。
- Few-Shot Prompting:在提示中提供一些範例來示範所需的回應格式。
- 快取
- 提示快取:透過儲存和重複使用預先計算的注意力狀態來優化 LLM。
分塊
- 固定大小分塊
- 將文字劃分為大小一致的片段以進行高效處理。
- 根據大小和重疊將文字拆分為區塊。
- 範例:按字元分割(LangChain)。
- 範例:SentenceSplitter (LlamaIndex)。
- 遞迴分塊
- 使用遞歸演算法對複雜文檔結構進行分層分段。
- 範例:按字元遞歸分割(LangChain)。
- 基於文件的分塊
- 根據元資料或格式提示對文件進行分段,以進行有針對性的分析。
- 範例:MarkdownHeaderTextSplitter (LangChain)。
- 範例:使用 OpenCLIP 等模型處理圖像和文字嵌入。
- 語意分塊
- 代理分塊
嵌入
- 選擇嵌入模型
- MTEB 排行榜:探索 Hugging Face 評估模型嵌入的基準。
- 自訂嵌入:為特定領域或任務開發客製化嵌入,以增強模型效能。自訂嵌入可以捕捉特定領域的術語和細微差別。技術包括在您自己的資料集上微調預訓練模型,或使用 TensorFlow 或 PyTorch 等框架從頭開始訓練嵌入。
檢索
- 檢索方法
- 向量存儲扁平索引
- 簡單而有效的檢索形式。
- 內容被向量化並儲存為平面內容向量。
- 層次索引檢索
- 將資料按層次結構縮小到不同層級。
- 依層級順序執行檢索。
- 假設性問題
- 用於增加資料庫區塊和查詢之間的相似性(與 HyDE 相同)。
- LLM 用於為每個文字區塊產生特定問題。
- 將這些問題轉換為向量嵌入。
- 在搜尋過程中,將查詢與該問題向量索引進行比對。
- 假設文檔嵌入 (HyDE)
- 用於增加資料庫區塊和查詢之間的相似性(與假設問題相同)。
- LLM 用於根據查詢產生假設回應。
- 將此響應轉換為向量嵌入。
- 將查詢向量與假設回應向量進行比較。
- 從小到大檢索
- 透過使用較小的區塊進行搜尋和使用較大的區塊進行上下文來改進檢索。
- 較小的子塊引用較大的父塊
- 重新排名:透過重新排序最初檢索的文檔,優先考慮與查詢語義最相關的文檔,增強 RAG 管道中的搜尋結果。
指標
搜尋指標
這些指標用於衡量嵌入之間的相似性,這對於評估 RAG 系統檢索和整合外部文件或資料來源的效率至關重要。選擇適當的相似性指標,您可以優化 RAG 系統的效能和準確性。或者,您可以開發適合您的特定領域或利基的自訂指標,以捕獲特定領域的細微差別並提高相關性。
餘弦相似度
- 測量多維空間中兩個向量之間角度的餘弦。
- 對於比較文字嵌入非常有效,其中向量的方向代表語義資訊。
- 通常在 RAG 系統中用於測量查詢嵌入和文件嵌入之間的語義相似性。
點積
- 計算兩個數字序列的相應條目的乘積總和。
- 相當於向量歸一化後的餘弦相似度。
- 簡單高效,常與硬體加速一起使用進行大規模計算。
歐氏距離
- 計算歐幾里德空間中兩點之間的直線距離。
- 可以與嵌入一起使用,但由於“維數災難”,在高維空間中可能會失去有效性。
- 常用於降維後的 K 均值等聚類演算法。
傑卡德相似度
- 以交集的大小除以集合並集的大小來衡量兩個有限集合之間的相似性。
- 在比較標記集時很有用,例如在詞袋模型或 n-gram 比較中。
- 不太適用於法學碩士產生的連續嵌入。
注意:餘弦相似度和點積通常被視為衡量高維嵌入之間相似度的最有效指標。
回應評估指標
這些指標評估 RAG 系統產生的答案的品質和相關性,評估它們的準確性、上下文適當性和可靠性。透過應用這些評估指標,您可以深入了解系統的性能並確定需要改進的領域。
工具
這些工具可以幫助評估 RAG 系統的效能,從追蹤使用者回饋到記錄查詢互動以及隨著時間的推移比較多個評估指標。
- LangFuse :用於追蹤 LLM 指標、可觀察性和提示管理的開源工具。
- Ragas :幫助評估 RAG 管道的框架。
- LangSmith :用於建立生產級 LLM 應用程式的平台,可讓您密切監控和評估您的應用程式。
- Hugging Face Evaluate :用於計算 BLEU 和 ROUGE 等指標以評估文字品質的工具。
- 權重和偏差:追蹤實驗、記錄指標並視覺化表現。
?資料庫
下面列出了幾個適合檢索增強生成 (RAG) 應用程式的資料庫系統。它們涵蓋了一系列 RAG 用例,有助於有效儲存和檢索向量以產生回應或建議。
基準測試
分散式資料處理與服務引擎:
- Apache Cassandra:分散式 NoSQL 資料庫管理系統。
- MongoDB Atlas:具有整合向量搜尋功能的全球分散式多模型資料庫服務。
- Vespa:專為即時應用程式設計的開源大數據處理和服務引擎。
具有向量功能的搜尋引擎:
- Elasticsearch:提供向量搜尋功能以及傳統搜尋功能。
- OpenSearch:分散式搜尋和分析引擎,源自 Elasticsearch。
向量資料庫:
- Chroma DB:人工智慧原生開源嵌入資料庫。
- Milvus:用於人工智慧應用程式的開源向量資料庫。
- Pinecone:無伺服器向量資料庫,針對機器學習工作流程進行了最佳化。
- Oracle AI 向量搜尋:在 Oracle 資料庫中整合向量搜尋功能,以基於向量嵌入進行語意查詢。
關係資料庫擴充:
- Pgvector:PostgreSQL 中向量相似性搜尋的開源擴充。
其他資料庫系統:
- Azure Cosmos DB:具有整合向量搜尋的全球分散式多模型資料庫服務。
- Couchbase:分散式 NoSQL 雲端資料庫。
- Lantern:一個具有隱私意識的個人搜尋引擎。
- LlamaIndex:採用簡單的記憶體向量儲存來進行快速實驗。
- Neo4j:圖形資料庫管理系統。
- Qdrant:一個專為相似性搜尋而設計的開源向量資料庫。
- Redis Stack:記憶體中的資料結構存儲,用作資料庫、快取和訊息代理。
- SurrealDB:針對時間序列資料最佳化的可擴充多模型資料庫。
- Weaviate:開源雲端原生向量搜尋引擎。
向量搜尋庫和工具:
- FAISS:一個用於高效相似性搜尋和密集向量聚類的函式庫,旨在處理大規模資料集並針對最近鄰居的快速檢索進行了最佳化。