跳转到主要内容
知识库用于把企业资料、产品文档、支持策略等外部知识接入智能体。VeADK Java 的推荐入口是 KnowledgeBase 和 Agent.builder().knowledgebase(...):你把知识库服务挂到 Agent 上,VeADK 会在构建 Agent 时自动注入 loadKnowledgebase 工具,模型需要查资料时就可以先检索再回答。

工作流程

  1. 选择知识库后端:opensearch 或 viking。
  2. 用 KnowledgeBase.builder() 配置索引、集合和召回数量。
  3. 通过 addFromText(...)、addFromFiles(...)、addFromDirectory(...) 或 addDoc(...) 导入资料。
  4. 在 Agent.builder() 中配置 knowledgebase(knowledgeBase)。
  5. 使用 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(),则需要手动配置:
使用 VeADK Java 的 Agent.builder().knowledgebase(...) 时通常不需要手动添加这个工具。

排查问题

最后修改于 2026年10月20日