137 lines
4.3 KiB
Markdown
137 lines
4.3 KiB
Markdown
|
|
# 火山方舟知识库接入指南
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
本项目已成功接入火山方舟知识库,支持从火山方舟知识库中检索相关内容作为 external_rag 注入到实时对话系统中。
|
|||
|
|
|
|||
|
|
## 功能特性
|
|||
|
|
|
|||
|
|
- 支持从火山方舟知识库智能检索相关内容
|
|||
|
|
- 多级降级策略:火山方舟 → test2/server → 本地知识库
|
|||
|
|
- 支持配置相似度阈值和返回结果数量
|
|||
|
|
- 完整的错误处理和日志记录
|
|||
|
|
- 与test2项目配置完全兼容
|
|||
|
|
|
|||
|
|
## 配置方式
|
|||
|
|
|
|||
|
|
### 方式一:通过 .env 文件配置(推荐)
|
|||
|
|
|
|||
|
|
1. 复制 `.env.example` 文件为 `.env`(或直接在 `test2/server/.env` 中配置)
|
|||
|
|
|
|||
|
|
2. 配置以下参数:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# 启用火山方舟知识库
|
|||
|
|
VOLC_ARK_ENABLED=true
|
|||
|
|
|
|||
|
|
# 火山方舟 API Key(可选,如果未设置则使用VOLC_ACCESS_KEY_ID)
|
|||
|
|
VOLC_ARK_API_KEY=your_ark_api_key
|
|||
|
|
|
|||
|
|
# 火山方舟 Endpoint ID
|
|||
|
|
VOLC_ARK_ENDPOINT_ID=your_ark_endpoint_id
|
|||
|
|
|
|||
|
|
# 火山方舟知识库数据集ID(多个用逗号分隔)
|
|||
|
|
VOLC_ARK_KNOWLEDGE_BASE_IDS=your_knowledge_base_dataset_id
|
|||
|
|
|
|||
|
|
# 检索参数(可选)
|
|||
|
|
VOLC_ARK_KNOWLEDGE_TOP_K=3
|
|||
|
|
VOLC_ARK_KNOWLEDGE_THRESHOLD=0.5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方式二:通过命令行参数配置
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
mvn exec:java -Dexec.args="--mod=text --volc-enabled --volc-endpoint=your_endpoint --volc-kb-ids=your_kb_ids --volc-api-key=your_api_key --volc-topk=5 --volc-threshold=0.6"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 命令行参数说明
|
|||
|
|
|
|||
|
|
| 参数 | 说明 | 必填 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `--volc-enabled` | 启用火山方舟知识库 | 是 |
|
|||
|
|
| `--volc-ak` | 火山云 Access Key ID | 否 |
|
|||
|
|
| `--volc-sk` | 火山云 Secret Access Key | 否 |
|
|||
|
|
| `--volc-api-key` | 火山方舟 API Key | 否 |
|
|||
|
|
| `--volc-endpoint` | 火山方舟 Endpoint ID | 是 |
|
|||
|
|
| `--volc-kb-ids` | 火山方舟知识库数据集ID,多个用逗号分隔 | 是 |
|
|||
|
|
| `--volc-topk` | 返回结果数量,默认3 | 否 |
|
|||
|
|
| `--volc-threshold` | 相似度阈值,默认0.5 | 否 |
|
|||
|
|
|
|||
|
|
## 使用流程
|
|||
|
|
|
|||
|
|
1. **准备火山方舟知识库**
|
|||
|
|
- 在火山引擎方舟控制台创建知识库
|
|||
|
|
- 上传文档并确保文档已正确索引
|
|||
|
|
- 记录知识库 Dataset ID
|
|||
|
|
|
|||
|
|
2. **配置参数**
|
|||
|
|
- 通过 .env 文件或命令行参数配置访问密钥和数据集信息
|
|||
|
|
|
|||
|
|
3. **运行测试**
|
|||
|
|
```bash
|
|||
|
|
# 文本模式
|
|||
|
|
mvn exec:java -Dexec.args="--mod=text --volc-enabled"
|
|||
|
|
|
|||
|
|
# 麦克风模式
|
|||
|
|
mvn exec:java -Dexec.args="--volc-enabled"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **验证结果**
|
|||
|
|
- 查看控制台日志,确认火山方舟知识库检索是否成功
|
|||
|
|
- 确认返回的 external_rag 内容是否符合预期
|
|||
|
|
|
|||
|
|
## 降级策略
|
|||
|
|
|
|||
|
|
系统采用多级降级策略,确保在任何情况下都能正常工作:
|
|||
|
|
|
|||
|
|
1. **第一优先级**:火山方舟知识库(如果启用)
|
|||
|
|
2. **第二优先级**:test2/server 知识库
|
|||
|
|
3. **第三优先级**:本地 sample_rag.json 文件
|
|||
|
|
|
|||
|
|
## 文件变更说明
|
|||
|
|
|
|||
|
|
### 新增文件
|
|||
|
|
|
|||
|
|
- `VolcKnowledgeClient.java` - 火山方舟知识库客户端
|
|||
|
|
- `.env.example` - 配置示例文件(已更新为火山方舟配置)
|
|||
|
|
- `VOLC_KNOWLEDGE_INTEGRATION.md` - 本说明文档
|
|||
|
|
|
|||
|
|
### 修改文件
|
|||
|
|
|
|||
|
|
- `pom.xml` - 添加HTTP客户端依赖(已移除VikingDB SDK)
|
|||
|
|
- `Config.java` - 添加火山方舟配置项
|
|||
|
|
- `Main.java` - 添加火山方舟命令行参数
|
|||
|
|
- `ServerResponseHandler.java` - 集成火山方舟知识库检索
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **权限安全**:请妥善保管 Access Key 和 API Key,不要提交到代码仓库
|
|||
|
|
2. **网络访问**:确保服务器可以访问火山方舟 API(ark.cn-beijing.volces.com)
|
|||
|
|
3. **知识库准备**:确保知识库已正确创建并包含索引数据
|
|||
|
|
4. **性能优化**:根据实际需求调整 top_k 和 threshold 参数
|
|||
|
|
5. **向后兼容**:保留了对旧配置项的兼容支持(VOLC_KNOWLEDGE_*)
|
|||
|
|
|
|||
|
|
## 故障排查
|
|||
|
|
|
|||
|
|
### 问题:火山方舟知识库检索失败
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
1. 检查 Endpoint ID 和 数据集ID 是否正确
|
|||
|
|
2. 确认 API Key 或 Access Key 是否正确
|
|||
|
|
3. 查看网络连接是否正常
|
|||
|
|
4. 检查控制台错误日志
|
|||
|
|
|
|||
|
|
### 问题:检索结果不相关
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
1. 调整 threshold 参数(降低值可以返回更多结果)
|
|||
|
|
2. 增加 top_k 参数获取更多候选结果
|
|||
|
|
3. 检查知识库中的文档内容是否相关
|
|||
|
|
|
|||
|
|
## 技术支持
|
|||
|
|
|
|||
|
|
如遇问题,请查看:
|
|||
|
|
- 火山方舟官方文档:https://www.volcengine.com/docs/84313
|
|||
|
|
- 项目控制台日志输出
|
|||
|
|
- test2/server/services/toolExecutor.js 中的参考实现
|