Dify新版本知识库支持外部知识库API对接原理
Dify新版本知识库支持外部知识库API对接原理
dify通过API服务链接外部知识库
1. 建立符合要求的外部知识库 API
url <your-endpoint>/retrieval
head Content-Type: application/json Authorization: Bearer your-api-key
body
属性 |
是否必需 |
类型 |
描述 |
示例值 |
knowledge_id |
是 |
字符串 |
知识库唯一 ID |
AAA-BBB-CCC |
query |
是 |
字符串 |
用户的查询 |
Dify 是什么? |
retrieval_setting |
是 |
对象 |
知识检索参数 |
见下文 |
r
retrieval_setting属性是一个包含以下键的对象:
属性 |
是否必需 |
类型 |
描述 |
示例值 |
top_k |
是 |
整数 |
检索结果的最大数量 |
5 |
score_threshold |
是 |
浮点数 |
结果与查询相关性的分数限制,范围:0~1 |
0.5 |
return
属性 |
是否必需 |
类型 |
描述 |
示例值 |
records |
是 |
对象列表 |
从知识库查询的记录列表 |
见下文 |
records属性是一个包含以下键的对象列表:
属性 |
是否必需 |
类型 |
描述 |
示例值 |
content |
是 |
字符串 |
包含知识库中数据源的文本块 |
Dify:GenAI 应用程序的创新引擎 |
score |
是 |
浮点数 |
结果与查询的相关性分数,范围:0~1 |
0.5 |
title |
是 |
字符串 |
文档标题 |
Dify 简介 |
metadata |
否 |
json |
包含数据源中文档的元数据属性及其值 |
见示例 |
2. 关联外部知识库
3. 连接外部知识库
4. 测试外部知识库连接与召回
5. 在应用内集成外部知识库
6. 多路召回原理
召回设置分权重设置和rerank模型两类
WeightRerankRunner:VectorSetting(vector_weight、embedding_model_name) KeywordSetting
计算逻辑:_calculate_keyword_score、_calculate_cosine
RerankModelRunner:
RetrievalService》DataPostProcessor 》RerankRunnerFactory 》create_rerank_runner
向量检索、全文检索: rerank模型
混合检索:权重设置、rerank模型
7. milvus 混合检索及rerank
AnnSearchRequest
数据查询结果,然后WeightedRanker
和 RRFRanker
- 在哪些情况下推荐使用混合搜索?
混合搜索非常适合需要高精确度的复杂情况,尤其是当一个实体可以由多个不同向量表示时。这适用于同一数据(如一个句子)通过不同的 Embeddings 模型进行处理的情况,或多模态信息(如个人的图像、指纹和声纹)转换为不同向量格式的情况。通过给这些向量分配权重,它们的综合影响可以极大地丰富召回率,提高搜索结果的有效性。
- 加权排序器如何对不同向量场之间的距离进行归一化处理?
加权排序器使用为每个向量场分配的权重对向量场之间的距离进行归一化处理。它根据权重计算每个向量场的重要性,优先考虑权重较高的向量场。建议在 ANN 搜索请求中使用相同的度量类型,以确保一致性。这种方法可以确保被认为更重要的向量对整体排名有更大的影响。
- 是否可以使用 Cohere Ranker 或 BGE Ranker 等其他排名器?
目前只支持所提供的排名器。正在计划在未来的更新中加入其他排名器。
- 是否可以同时进行多个混合搜索操作?
可以,支持同时执行多个混合搜索操作符。
- 能否在多个 AnnSearchRequest 对象中使用相同的向量字段来执行混合搜索?
从技术上讲,可以在多个 AnnSearchRequest 对象中使用相同的向量字段进行混合搜索。混合搜索并不需要多个向量字段。
更多推荐
所有评论(0)