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数据查询结果,然后WeightedRankerRRFRanker

  • 在哪些情况下推荐使用混合搜索?

混合搜索非常适合需要高精确度的复杂情况,尤其是当一个实体可以由多个不同向量表示时。这适用于同一数据(如一个句子)通过不同的 Embeddings 模型进行处理的情况,或多模态信息(如个人的图像、指纹和声纹)转换为不同向量格式的情况。通过给这些向量分配权重,它们的综合影响可以极大地丰富召回率,提高搜索结果的有效性。

  • 加权排序器如何对不同向量场之间的距离进行归一化处理?

加权排序器使用为每个向量场分配的权重对向量场之间的距离进行归一化处理。它根据权重计算每个向量场的重要性,优先考虑权重较高的向量场。建议在 ANN 搜索请求中使用相同的度量类型,以确保一致性。这种方法可以确保被认为更重要的向量对整体排名有更大的影响。

  • 是否可以使用 Cohere Ranker 或 BGE Ranker 等其他排名器?

目前只支持所提供的排名器。正在计划在未来的更新中加入其他排名器。

  • 是否可以同时进行多个混合搜索操作?

可以,支持同时执行多个混合搜索操作符。

  • 能否在多个 AnnSearchRequest 对象中使用相同的向量字段来执行混合搜索?

从技术上讲,可以在多个 AnnSearchRequest 对象中使用相同的向量字段进行混合搜索。混合搜索并不需要多个向量字段。


 

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐