>許多抹布應用程序採用簡化的檢索過程:將文檔細分為塊,轉換為嵌入,並存儲在矢量數據庫中。 查詢基於嵌入的相似性觸發最類似文檔的TOP-K檢索。 但是,這種方法受到限制,尤其是在廣泛的數據集中。 塊歧義和次優信息檢索可能會損害準確性。 通過利用文檔結構來提高遞歸檢索,從而提高了檢索精度。 它沒有直接檢索塊,而是優先考慮相關摘要,隨後鑽到相關的塊以獲得更為重點的結果。
本文詳細介紹了遞歸檢索,並使用llamaindex引導您實施。
rag和langchain
>
使用LlamainDex>
步驟1:文檔加載和準備 使用>加載文檔。 每個文檔都會收到一個標題和元數據(例如類別),以增強過濾。 已加載的文檔存儲在字典中以易於訪問。
>>步驟2:llm和塊設置
>
SimpleDirectoryReader
> llm(例如OpenAI的GPT-4O Mini),以及用於塊創建的句子分配器和用於過程監視的回調管理器。
from llama_index.core import SimpleDirectoryReader # ... (Code for loading documents remains the same) ...
步驟3:向量索引創建和摘要生成> 為每個文檔創建一個向量索引,以啟用基於相似性的檢索。 llm生成的摘要存儲為
>對象。>
from llama_index.llms.openai import OpenAI from llama_index.core.callbacks import LlamaDebugHandler, CallbackManager from llama_index.core.node_parser import SentenceSplitter # ... (Code for LLM and chunking setup remains the same) ...
步驟4:頂級矢量索引構建
>由生成的摘要構建了頂級矢量索引,在訪問詳細的塊之前,可以初步檢索相關的摘要。>
IndexNode
from llama_index.core import VectorStoreIndex, SummaryIndex from llama_index.core.schema import IndexNode # ... (Code for building vector indices and generating summaries remains the same) ...
> 配置了遞歸檢索器,將頂級檢索器與單個文檔檢索器相結合,以促進層次檢索過程。
>>
# ... (Code for building the top-level vector index remains the same) ...
>使用配置的遞歸獵犬執行 示例查詢。
>from llama_index.core import SimpleDirectoryReader
# ... (Code for loading documents remains the same) ...
遞歸檢索,利用文檔摘要和層次結構,增強了檢索到的塊的相關性,尤其是與大數據集的相關性。 它為在數據豐富的環境中構建準確的檢索系統提供了強大的解決方案。 在鏈接的博客文章中可以進一步探索抹布技術。
以上是RAG的遞歸檢索:LlamainDex實施的詳細內容。更多資訊請關注PHP中文網其他相關文章!