4.9 KiB
#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 提供的解析器輸出:
- LangBot讀取上傳的文件
- 解析器外掛程式(例如 GeneralParsers)提取“文字”、“部分”和“元資料”
- LangRAG直接擷取結構化結果
- 如果沒有可用的解析器輸出,LangRAG 將回退到其內部解析器 5.所選索引策略建構塊/問答對
- LangBot Host 產生嵌入並儲存向量
這意味著 LangRAG 在與外部解析器插件配合使用時效果最佳。
## 配置
知識庫創建
| 參數 | 描述 | 預設 |
|---|---|---|
embedding_model_uuid |
嵌入模型 | 必填 |
索引類型 |
索引策略:chunk、parent_child或qa |
區塊 |
塊大小 |
每塊字元數 | 512 |
重疊 |
區塊之間的重疊 | 50 |
parent_chunk_size |
父區塊大小(僅限parent_child) | 2048 |
child_chunk_size |
子區塊大小(僅parent_child) | 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 在攝取過程中直接使用這些解析器輸出,這通常會比後備解析器產生更好的區塊和更好的檢索品質。
## 發展
pip install -r requirements.txt
cp .env.example .env
在“.env”中設定“DEBUG_RUNTIME_WS_URL”和“PLUGIN_DEBUG_KEY”,然後使用 IDE 偵錯器啟動。