在AgentRun中,知識庫功能允許您將外部專業文檔或私人資料關聯至 AI Agent。通過知識庫整合,Agent 在執行任務時可以檢索相關上下文,從而顯著提升回答的準確性和時效性。
目前 AgentRun 支援以下知識庫類型。其中阿里雲百鍊與 RAGFlow 通過串連已有知識庫接入,需要您先在對應平台中建立好知識庫;Tablestore 知識庫與 AnalyticDB PostgreSQL 知識庫為自建知識庫,通過建立知識庫直接在 AgentRun 中建立。
阿里雲百鍊:串連已在阿里雲百鍊中建立好的知識庫,支援多選。
RAGFlow:串連自建或已部署的 RAGFlow 服務,需提供 BaseURL、API-KEY 和 Dataset ID。
Tablestore 知識庫:由 AgentRun 自動建立並配置 Tablestore 執行個體,或指定當前地區已有的 Tablestore 執行個體來承載向量與全文索引,無需自行準備向量資料庫。
AnalyticDB PostgreSQL 知識庫:使用您已有的 AnalyticDB PostgreSQL 執行個體,在指定命名空間下建立文檔集合,適用於希望知識庫資料與自有執行個體統一管理的情境。
綁定知識庫
登入AgentRun 控制台,在左側導覽列選擇模型與工具 > 知識庫;
在知識庫列表頁單擊建立知識庫,選擇知識庫的接入方式:
串連已有知識庫:接入已在阿里雲百鍊或 RAGFlow 中建立好的知識庫,配置方法參見下文「綁定阿里雲百鍊知識庫」和「綁定 RAGFlow 知識庫」。
建立知識庫:在 AgentRun 中建立自建知識庫。此時還需選擇配置方式:自動設定固定使用 Tablestore,由 AgentRun 自動建立並配置執行個體;自訂配置需自行選擇知識庫類型為 Tablestore 知識庫或 AnalyticDB PostgreSQL 知識庫。配置方法參見下文「建立 Tablestore 知識庫」和「建立 AnalyticDB PostgreSQL 知識庫」。
自建知識庫的可用地區以控制台實際展示為準,部分地區暫不支援建立知識庫:eu-central-1、ap-northeast-1 等地區不支援建立知識庫;在 us-west-1、us-southeast-1 地區,知識庫類型中的 AnalyticDB PostgreSQL 知識庫選項不可選。
綁定阿里雲百鍊知識庫
如果您使用阿里雲百鍊作為 RAG 服務,請配置以下參數:
知識庫名稱:輸入自訂的知識庫顯示名稱。
描述:簡述該知識庫的用途或涵蓋的資料範圍。
知識庫類型:選擇百鍊。
工作空間:首次使用時,點擊預設業務空間的立即授權按鈕,開啟授權並確認業務空間。
知識庫:從下拉式清單中選擇已在阿里雲百鍊知識庫建立好的知識庫(支援多選),並根據業務需要修改檢索配置。
點擊建立知識庫,即可將您的阿里雲百鍊知識庫綁定至AgentRun平台。
綁定 RAGFlow 知識庫
RAGFlow 接入已進入維護期。新使用者後續可通過 MCP 或 SDK 自主接入,平台不再提供產品化支援。
RAGFlow 是一款開源的深度文檔理解引擎,綁定時請填寫以下資訊:
知識庫名稱:輸入自訂的知識庫顯示名稱。
描述:簡述該知識庫的用途或涵蓋的資料範圍。
知識庫類型:選擇RAGFlow。
RAGFlow配置(可參考控制台指引,快速通過SAE部署RAGFlow):
BaseURL:填寫 RAGFlow 服務的 API 端點地址。
DataSet IDs:填寫需要關聯的資料集 ID(支援多個 ID)。
憑證配置:選擇已儲存的RAGFlow的API-KEY憑證。
說明關於如何擷取上述 RAGFlow 配置參數,請參考本文如何擷取 RAGFlow 配置資訊。
檢索配置:根據業務需要修改相似性閾值和向量相似性權重。
點擊建立知識庫,即可將您自建的RAGFlow知識庫綁定至AgentRun平台。
建立 Tablestore 知識庫
如果您沒有現成的向量資料庫,可以選擇 Tablestore 知識庫,由 AgentRun 負責執行個體的建立與索引配置。在知識庫列表頁單擊建立知識庫,接入方式選擇建立知識庫,然後按以下兩種配置方式之一建立:
自動設定:固定使用 Tablestore,無需選擇知識庫類型和執行個體。提交前 AgentRun 會檢查 Tablestore 服務的開通狀態,並檢查 AliyunOTSAccessingOSSRole 角色;角色不存在時會中止建立並引導您完成授權。授權完成後,AgentRun 自動建立一個名稱形如
knowledge-xxxx、叢集類型為 SSD 的 Tablestore 執行個體,並為其打上source=agentrun和scene=knowledgebase標籤。自訂配置:知識庫類型選擇 Tablestore 知識庫,並從 Tablestore 執行個體下拉式清單中選擇當前地區已有的執行個體。
配置以下參數:
配置項 | 是否必填 | 預設值 | 說明 |
知識庫名稱 | 是 | 無 | 輸入自訂的知識庫顯示名稱,提交時會校正名稱是否已被佔用。 |
描述 | 否 | 無 | 簡述該知識庫的用途或涵蓋的資料範圍。 |
工作空間 | 否 | 當前工作空間 | 未指定時使用預設工作空間。 |
Tablestore 執行個體 | 自訂配置時必填 | 無 | 列出當前地區已有的 Tablestore 執行個體。自動設定時不展示該配置項,執行個體由 AgentRun 自動建立。 |
標籤 | 否 | 無 | 用於知識庫資源的分類和管理,提交時空標籤會被忽略。 |
Embedding Model | 是 | text-embedding-v4 | 可選 text-embedding-v3、text-embedding-v4。該選擇決定 Vector Dimension 的可選值。 |
Vector Dimension | 是 | 1024 | text-embedding-v3 可選 1024、768、512、256、128、64;text-embedding-v4 可選 2048、1536、1024、768、512、256、128、64。 |
Metadata Configuration | 否 | 無 | 以欄位名與欄位類型定義文檔的中繼資料欄位,類型可選 string、long、double、boolean、date 及對應的 list 類型(string_list、long_list、double_list、boolean_list、date_list)。 |
中繼資料過濾條件 | 否 | 無 | 僅在 Metadata Configuration 中定義了有效欄位後展示。支援 andAll、orAll 兩種組合方式,條件運算子包括 equals、notEquals、greaterThan、greaterThanOrEquals、lessThan、lessThanOrEquals、in、notIn、startsWith、stringContains、listContains。 |
在檢索配置中設定知識庫的預設檢索行為,建立後可在知識庫詳情頁調整:
配置項 | 預設值 | 說明 |
檢索類型 | 同時啟用向量檢索和全文檢索索引 | 至少選擇一種檢索類型。 |
TopK | 20 | 單次檢索返回的結果數量,取值範圍 1~100。 |
召回演算法 | RRF | 可選 RRF、WEIGHT、MODEL,決定向量檢索與全文檢索索引結果的融合方式。 |
RRF 參數 k | 60 | 召回演算法為 RRF 時展示,取值範圍 2~100。 |
服務商 | bailian | 召回演算法為 MODEL 時展示,當前可選 bailian。 |
重排模型 | gte-rerank-v2 | 召回演算法為 MODEL 時展示,當前可選 gte-rerank-v2。 |
向量權重 | 0.7 | 召回演算法為 WEIGHT 時展示,取值範圍 0~1,全文檢索索引權重為 1 減去向量權重。 |
提交後,AgentRun 先在 Tablestore 中建立知識庫,再在 AgentRun 中產生對應的知識庫記錄。建立完成後,可在知識庫詳情頁匯入文件並驗證召回效果,參見下文「自建知識庫的文件管理與召回測試」。
關於 Embedding 模型的接入與配置,請參見向量模型-添加與配置 Embedding 模型。
建立 AnalyticDB PostgreSQL 知識庫
AnalyticDB PostgreSQL 接入已進入維護期。新使用者後續可通過 MCP 或 SDK 自主接入,平台不再提供產品化支援。
如果您已有 AnalyticDB PostgreSQL 執行個體,並希望知識庫資料儲存在自有執行個體中,可以選擇 AnalyticDB PostgreSQL 知識庫。建立前請確認:已有可用的 AnalyticDB PostgreSQL 執行個體、可訪問該執行個體的帳號與密碼、以及執行個體中已建立的命名空間及其密碼(系統命名空間不會出現在候選列表中)。
在建立知識庫面板中依次選擇:建立方式為建立知識庫、配置方式為自訂配置、知識庫類型為 AnalyticDB PostgreSQL 知識庫,然後配置以下參數:
配置項 | 是否必填 | 預設值 | 說明 |
知識庫名稱 | 是 | 無 | 輸入自訂的知識庫顯示名稱,提交時會校正名稱是否已被佔用。 |
描述 | 否 | 無 | 簡述該知識庫的用途或涵蓋的資料範圍。 |
工作空間 | 否 | 當前工作空間 | 未指定時使用預設工作空間。 |
AnalyticDB PostgreSQL 執行個體 | 是 | 無 | 列出當前地區已有的執行個體,支援按執行個體 ID 和執行個體描述搜尋。若當前地區沒有可用執行個體,可從下拉式清單跳轉到AnalyticDB PostgreSQL 購買頁建立執行個體。 |
使用者名稱 | 是 | 無 | 選擇執行個體後展示,用於訪問該執行個體並讀取命名空間列表。 |
密碼 | 是 | 無 | 選擇執行個體後展示,與使用者名稱一起校正。帳號或密碼錯誤時,使用者名稱和密碼會同時提示錯誤。 |
命名空間 | 是 | 無 | 填寫使用者名稱和密碼後展示可選的命名空間列表,其中不包含 public、htap、pgsearch 等系統命名空間。 |
命名空間密碼 | 是 | 無 | 用於訪問所選命名空間。修改命名空間或命名空間密碼後會自動校正,密碼不正確時提示「命名空間密碼不正確」。 |
中繼資料配置 | 否 | 無 | 以欄位名與欄位類型定義文檔的中繼資料欄位,類型可選 text、bool、integer、double precision。 |
Embedding Model | 否 | text-embedding-v3 | 可選 text-embedding-v1、text-embedding-v2、text-embedding-v3、text-embedding-v4、multimodal-embedding-v1。 |
Index Algorithm | 否 | cosine | 向量索引的距離演算法,可選 l2、ip、cosine。 |
使用者名稱、密碼、中繼資料配置、Embedding Model 和 Index Algorithm 均在選擇執行個體後才展示。
在檢索配置中設定知識庫的預設檢索行為,建立後可在知識庫詳情頁調整:
配置項 | 預設值 | 說明 |
全文檢索索引 | 關閉 | 開啟後可配置召回視窗和雙路召回演算法,與向量檢索結果融合。 |
TopK | 20 | 單次檢索返回的結果數量,取值範圍 1~100。 |
啟用重排因子 | 關閉 | 關閉時不提交重排因子參數。 |
RerankFactor | 2.0 | 啟用重排因子後展示,取值範圍 1.01~5。 |
啟用重排模型 | 關閉 | 僅在啟用重排因子後展示。 |
重排模型 | qwen3-rerank | 啟用重排模型後展示,可選 qwen3-rerank、gte-rerank-v2。 |
召回視窗左邊界 / 右邊界 | -5 / 5 | 開啟全文檢索索引並啟用召回視窗後展示,左邊界取值範圍 -10~0,右邊界取值範圍 0~10。 |
雙路召回演算法 | RRF | 開啟全文檢索索引後展示,可選 RRF、Weight、Cascaded。 |
RRF 參數 k | 60 | 雙路召回演算法為 RRF 時展示,最小值為 2。 |
Weight 參數 alpha | 0.5 | 雙路召回演算法為 Weight 時展示,取值範圍 0~1。 |
過濾條件 | 無 | 檢索時附加的過濾運算式,留空表示不過濾。 |
提交後,AgentRun 先在 AnalyticDB PostgreSQL 執行個體的指定命名空間中建立文檔集合,再在 AgentRun 中產生對應的知識庫記錄。建立完成後,可在知識庫詳情頁匯入文件並驗證召回效果,參見下文「自建知識庫的文件管理與召回測試」。
如何擷取 RAGFlow 配置資訊
通過SAE部署的RAGFlow,可通過登入RAGFlow平台。若要成功串連RAGFlow,您需要進入 RAGFlow 平台提取以下三個核心資訊:
擷取 BaseURL
點擊右上方帳戶圖片,進入個人設定/賬戶管理頁面。
找到API部分,查看基礎請求地址API Server即為BaseURL。
擷取 API-KEY
在個人API設定頁面中,找到。
複製已有的API KEY,如果沒有建立過,點擊Create new key按鈕進行建立。
參考憑證管理將擷取到的API KEY作為訪問第三方的憑證綁定在AgentRun平台,注意建立憑證時服務類型選擇其他服務。
擷取 Dataset ID
點擊頂部功能表列的Knowledge Base。
在列表中找到您想要關聯的資料集,點擊進入。
檢查瀏覽器地址欄的 URL,或在頁面的配置資訊列中找到該資料集的 UUID,即為
Dataset ID。
開發人員指南:在 Agent 中整合知識庫
綁定知識庫後,您可以通過 AgentRun SDK在代碼層面調用知識庫。
知識庫查詢程式碼範例
使用 agentrun.knowledgebase 模組,可以直接檢索知識庫內容。
from agentrun.knowledgebase import KnowledgeBase
## 擷取單知識庫,進行查詢
knowledgebase = KnowledgeBase.get_by_name("ragflow-test")
single_kb_retrieve_result = knowledgebase.retrieve("<your-query>")
print(single_kb_retrieve_result)
## 擷取多知識庫,進行查詢,支援跨供應商知識庫類型檢索
multi_kb_retrieve_result = KnowledgeBase.multi_retrieve(
query="<your-query>",
knowledge_base_names=["ragflow-test", "<your-knowledge-base-name-2>"],
)
print(multi_kb_retrieve_result)在 Agent 架構中整合知識庫
您可以將知識庫作為“工具”,注入到 LangChain 或其他 Agent 架構中,使 AI 具備自動查閱文檔的能力。
"""AgentRun 知識庫智能體整合程式碼範例
使用前,請參考https://docs.agent.run/docs/tutorial/quickstart/manual 配置好相應認證資訊和環境變數
curl http://127.0.0.1:9000/openai/v1/chat/completions -X POST \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "什麼是Serverless?"}], "stream": true}'
"""
import json
import os
from typing import Any
from langchain.agents import create_agent
import pydash
from agentrun import Config
from agentrun.integration.langchain import model
from agentrun.integration.langchain import knowledgebase_toolset
from agentrun.integration.langgraph.agent_converter import AgentRunConverter
from agentrun.knowledgebase import KnowledgeBase
from agentrun.server import AgentRequest, AgentRunServer
from agentrun.server.model import ServerConfig
from agentrun.utils.log import logger
# 請替換為您已經建立的 模型 名稱
AGENTRUN_MODEL_SERVICE = os.getenv("AGENTRUN_MODEL_SERVICE", "<your-model-service>")
AGENTRUN_MODEL_NAME = os.getenv("AGENTRUN_MODEL_NAME", "<your-model-name>")
KNOWLEDGE_BASES = os.getenv("AGENTRUN_KNOWLEDGE_BASES", "ragflow-test").split(",")
if AGENTRUN_MODEL_NAME.startswith("<") or not AGENTRUN_MODEL_NAME:
raise ValueError("請將 MODEL_NAME 替換為您已經建立的模型名稱")
## 載入知識庫工具,知識庫可以以工具的方式供Agent進行調用
knowledgebase_tools = []
if KNOWLEDGE_BASES and not KNOWLEDGE_BASES[0].startswith("<"):
knowledgebase_tools = knowledgebase_toolset(
knowledge_base_names=KNOWLEDGE_BASES,
)
else:
logger.warning("KNOWLEDGE_BASES 未設定或未替換,跳過載入知識庫工具。")
agent = create_agent(
model=model(AGENTRUN_MODEL_SERVICE, model=AGENTRUN_MODEL_NAME, config=Config(timeout=180)),
tools=[
*knowledgebase_tools, ## 通過工具整合知識庫查詢能力
],
system_prompt="你是一個 AgentRun 的 AI 專家,可以通過查詢知識庫文檔來回答使用者的問題。",
)
async def invoke_agent(request: AgentRequest):
messages = [
{"role": msg.role, "content": msg.content}
for msg in request.messages
]
# 如果配置了知識庫,查詢知識庫並將結果添加到上下文
if KNOWLEDGE_BASES and not KNOWLEDGE_BASES[0].startswith("<"):
# 擷取使用者最新的訊息內容作為查詢
user_query = None
for msg in reversed(request.messages):
if msg.role == "user":
user_query = msg.content
break
if user_query:
try:
retrieve_result = await KnowledgeBase.multi_retrieve_async(
query=user_query,
knowledge_base_names=KNOWLEDGE_BASES,
)
# 直接將檢索結果添加到上下文
if retrieve_result:
messages.append({
"role": "assistant",
"content": json.dumps(retrieve_result, ensure_ascii=False),
})
except Exception as e:
logger.warning(f"知識庫檢索失敗: {e}")
input: Any = {"messages": messages}
converter = AgentRunConverter()
if request.stream:
async def async_generator():
async for event in agent.astream(input, stream_mode="updates"):
for item in converter.convert(event):
yield item
return async_generator()
else:
result = await agent.ainvoke(input)
return pydash.get(result, "messages[-1].content", "")
AgentRunServer(
invoke_agent=invoke_agent,
config=ServerConfig(
cors_origins=[
"*"
]
),
).start()自建知識庫的文件管理與召回測試
建立 Tablestore 知識庫或 AnalyticDB PostgreSQL 知識庫後,可以在知識庫詳情頁匯入文件並驗證檢索效果,再決定是否調整檢索參數。在知識庫列表中單擊知識庫名稱進入詳情頁,頁麵包含以下頁簽:
概覽與配置:查看知識庫的基本資料,並修改檢索配置。
文件管理:管理知識庫中的文檔。僅自建知識庫(Tablestore 知識庫、AnalyticDB PostgreSQL 知識庫)展示該頁簽。
召回測試:用真實查詢驗證召回效果。僅自建知識庫展示該頁簽。
整合與案例:查看在 Agent 中整合該知識庫的方式與樣本。
通過召回測試驗證檢索配置是否滿足業務需要:
在知識庫詳情頁切換到召回測試頁簽。
輸入查詢文本,單擊開始測試。查詢文本為空白時開始測試不可用。
查看返回的召回結果與召回效果,判斷當前檢索配置是否命中預期文檔。
如需調整,在檢索參數中修改 TopK、召回演算法、向量權重等參數後重新測試;確認效果後單擊儲存檢索參數,將參數儲存到該知識庫。
綁定的阿里雲百鍊和 RAGFlow 知識庫由對應平台管理文檔與召回策略,AgentRun 側不提供文件管理和召回測試頁簽。
注意事項
網路連通性:如果您部署的是私人化 RAGFlow,請確保 AgentRun 服務所在的伺服器環境能夠正常訪問 RAGFlow 的
BaseURL。API 金鑰時效:請定期檢查 API-KEY 是否有效。若在RAGFlow中重設了 Key,需同步在 AgentRun 後台進行更新。
語義一致性:建議知識庫所採用的 Embedding 模型與 Agent 實際使用的 LLM 在語義理解能力上保持匹配,以獲得最佳的檢索召回效果。