KnowledgeBase 和 Agent.builder().knowledgebase(...):你把知识库服务挂到 Agent 上,VeADK 会在构建 Agent 时自动注入 loadKnowledgebase 工具,模型需要查资料时就可以先检索再回答。
工作流程
- 选择知识库后端:
opensearch或viking。 - 用
KnowledgeBase.builder()配置索引、集合和召回数量。 - 通过
addFromText(...)、addFromFiles(...)、addFromDirectory(...)或addDoc(...)导入资料。 - 在
Agent.builder()中配置knowledgebase(knowledgeBase)。 - 使用
Runner执行对话;模型会在需要外部资料时调用自动注入的loadKnowledgebase。
OpenSearch 示例
OpenSearch 适合把本地文本、文件或目录切分成向量片段后存入自己的 OpenSearch 索引。它会使用 Ark embedding 模型生成向量,因此至少要配置模型 API Key。Viking 示例
Viking 知识库适合使用火山引擎侧的知识库集合。Java SDK 中通过appName(...) 指定集合名,搜索可以使用 DATABASE_VIKING_API_KEY;如果要创建集合、导入文档或使用 TOS 文档 URI,仍然需要 AK/SK 或 IAM 凭证。
也可以在代码里通过
vikingApiKey(...) 显式传入搜索 API Key,显式参数优先于环境变量。
后端与导入方式
KnowledgeBase 同时提供异步方法,例如 addFromTextAsync(...)、addFromFilesAsync(...)、addDocAsync(...) 和 searchAsync(...),适合在已有 RxJava 流程中组合。
自动工具注入
Agent.builder().knowledgebase(service) 接收任何实现 BaseKnowledgebaseService 的服务。构建 Agent 时,如果工具列表中还没有名为 loadKnowledgebase 的工具,VeADK 会自动创建 LoadKnowledgebaseTool 并加入工具列表。这个工具会把模型传入的 query 转成 searchKnowledgebase(query) 调用,并把召回片段返回给模型。
如果你直接使用 ADK Java 的 LlmAgent.builder(),则需要手动配置:
Agent.builder().knowledgebase(...) 时通常不需要手动添加这个工具。