#LangRAG LangBot 的 RAG(檢索增強產生)引擎插件。 該插件示範如何建立知識引擎,使用 LangBot Host 的內建基礎架構(嵌入模型和向量資料庫)來處理文件攝取和向量檢索。 ## 特徵 -**外部解析器整合**- 更喜歡來自解析器插件(例如 GeneralParsers)的預解析內容,包括結構化部分和文檔元數據 -**後備內部解析**- 包含內建解析器作為未配置外部解析器時的後備 -**多重索引策略**- 扁平分塊、父子分塊、LLM 產生的問答對 -**彈性檢索**- 向量、全文或混合搜尋 -**查詢重寫**- HyDE、多查詢、後退策略以提高召回率 -**可配置分塊**- 具有自訂區塊大小和重疊的遞歸字元分割 -**節感知分塊**- 當結構化節可用時,分塊會保留標題、頁面資訊和表格邊界 -**上下文擴展**- 可以選擇在每個命中周圍附加相鄰區塊,以獲得更豐富的檢索上下文 -**文件管理**- 依文件刪除索引向量 ## 建築學 ``` ┌─────────────────────────────────┐ │ LangBot Core │ │ (Embedding / VDB / Storage) │ └──────────┬──────────────────────┘ │ RPC (IPC) ┌──────────▼──────────────────────┐ │ LangRAG │ │ ┌───────────────────────────┐ │ │ │ Knowledge Engine │ │ │ │ Parse → Chunk → Embed │ │ │ │ → Store / Search │ │ │ └───────────────────────────┘ │ └─────────────────────────────────┘ ``` ## 攝取流程 LangRAG 現在更喜歡 LangBot Host 提供的解析器輸出: 1. LangBot讀取上傳的文件 2. 解析器外掛程式(例如 GeneralParsers)提取“文字”、“部分”和“元資料” 3. LangRAG直接擷取結構化結果 4. 如果沒有可用的解析器輸出,LangRAG 將回退到其內部解析器 5.所選索引策略建構塊/問答對 6. LangBot Host 產生嵌入並儲存向量 這意味著 LangRAG 在與外部解析器插件配合使用時效果最佳。 ## 配置 ### 知識庫創建 |參數|描述 |預設 | |------------|-------------|---------| |`embedding_model_uuid`|嵌入模型 |必填| |`索引類型`|索引策略:`chunk`、`parent_child`或`qa`|`區塊`| |`塊大小`|每塊字元數 | 512 | 512 |`重疊`|區塊之間的重疊 | 50 | 50 |`parent_chunk_size`|父區塊大小(僅限parent_child)| 2048 | 2048 |`child_chunk_size`|子區塊大小(僅parent_child)| 256 | 256 |`qa_llm_model_uuid`|用於問答產生的法學碩士(僅限問答)| - | |`每個區塊的問題`|每個區塊產生的問題(僅限品質保證) | 1 | ### 檢索 |參數|描述 |預設 | |------------|-------------|---------| |`top_k`|傳回的結果數 | 5 | |`搜尋類型`|搜尋模式:「向量」、「全文」或「混合」 |`向量`| |`query_rewrite`|重寫策略:`off`、`hyde`、`multi_query`或`step_back`|`關閉`| |`rewrite_llm_model_uuid`|用於查詢重寫的 LLM(啟用重寫時)| - | |`上下文視窗`|每次命中周圍附加的相鄰區塊的數量 | 0 | ## 指數策略 -**chunk**- 預設平面分塊。將文件分割成固定大小的區塊並直接嵌入每個區塊。當解析器部分可用時,將逐節建立區塊,而不是展平整個文件。 -**parent_child**- 兩級分塊。分為大的父塊,然後是較小的子塊。嵌入子塊但返回父文本以獲得更豐富的上下文。當解析器節可用時,節將用作自然父邊界。 -**qa**- LLM 產生的問答對。將文字分塊,使用 LLM 為每個區塊產生問答對,並嵌入問題。當解析器部分可用時,問答產生也變得具有部分感知能力。 ## 查詢重寫 -**hyde**- 假設的文檔嵌入。產生查詢的假設答案,然後嵌入該答案以供檢索。 -**multi_query**- 產生 3 個查詢變體,對每個變體進行搜索,並按分數合併結果。 -**step_back**- 產生更抽象的問題並使用原始查詢和抽象查詢進行搜尋。 ## 與 GeneralParsers 配對 GeneralParsers 目前是 LangRAG 推薦的解析器,因為它可以提供: - 更清晰的 PDF 提取 - 結構化部分 - 表格保留文本 - 文檔級元數據 - 透過視覺模型進行可選的 OCR 和影像描述 LangRAG 在攝取過程中直接使用這些解析器輸出,這通常會比後備解析器產生更好的區塊和更好的檢索品質。 ## 發展 ```bash pip install -r requirements.txt cp .env.example .env ``` 在“.env”中設定“DEBUG_RUNTIME_WS_URL”和“PLUGIN_DEBUG_KEY”,然後使用 IDE 偵錯器啟動。 ## 連結 - [LangBot 文件](https://langbot.app/docs/)