跳到主要内容
版本:V1.1.0

hybridSearch - 混合搜索

hybridSearch() 用于将全文搜索和向量相似度搜索与排名相结合。

信息

仅支持在使用 SeekdbClient 连接时,才能使用该接口。关于 SeekdbClient 的详细介绍,参见 SeekdbClient

前提条件

请求参数

hybrid_search(
query={
"whereDocument": ,
"where": ,
"nResults":
},
knn={
queryEmbeddings
"queryTexts":
"where":
"nResults":
},
rank=,
nResults=,
include=
)
  • query:全文搜索配置,包括以下几个参数:

    参数取值类型是否必选描述取值示例
    whereWhere可选Metadata 筛选条件。{"category": {"$eq": "AI"}}
    whereDocumentWhereDocument可选文档内容过滤条件(全文搜索)。{"$contains": "machine"}
    nResultsnumber可选全文搜索的结果数
  • knn:Vector 搜索配置,包括以下几个参数:

    参数取值类型是否必选描述取值示例
    queryEmbeddingsnumber[] | number[][]可选用于批量查询的单个向量或向量列表;如果提供,则直接使用(忽略embeddingFunction);如果没有提供,则必须提供 query_textcollection 必须具有 embeddingFunction[1.0, 2.0, 3.0]
    queryTextsstring | string[]可选单个向量或向量列表;如果提供,则直接使用(忽略 embeddingFunction);如果没有提供,则必须提供 documents,同时 collection 必须具有 embeddingFunction["my query text"]
    whereWhere可选Metadata 筛选条件。{"category": {"$eq": "AI"}}
    nResultsnumber可选向量搜索返回结果数量
  • 其他参数如下:

    |参数|取值类型|是否必选|描述|取值示例| |rank|HybridSearchRank |可选|排名配置,例如:{"rrf": {"rank_window_size": 60, "rank_constant": 60}}|{"category": {"$eq": "AI"}}| |nResults|number|必须|返回相似的结果数,默认值为 10|3| |include|readonly ("documents" | "metadatas" | "embeddings" | "distances")[]|可选|要包含的字段列表:["documents", "metadatas", "embeddings"]。|["documents", "metadatas", "embeddings"]|

信息
  • 使用的 embeddingFunction 是与 collection 相关联的(在 createCollection()getCollection() 期间设置)。您不能每次操作都覆盖它。
  • 至少提供 query 或 knn 中的一个
  • knn:
    • queryEmbeddings 存在时将根据 collection.dimension 验证维度是否一致。
    • queryTexts: string 或 string[]; 使用集合的 embeddingFunction 自动嵌入 (缺少函数会抛出 ValueError)。
  • 如果提供 knn.queryTexts,需要配置 embeddingFunction

请求示例

import { SeekdbClient } from "seekdb";

const client = new SeekdbClient({
host: "127.0.0.1",
port: 2881,
user: "root",
password: "",
database: "test",
});

const collection = await client.getCollection({name: 'my_collection'});

const results = await collection.hybridSearch({
query: {
whereDocument: {$contains: "machine learning"},
nResults: 10
},
knn: {
queryTexts: 'documents',
nResults: 10
},
rank: {rrf: {}},
nResults: 10
});

返回参数

包含 ID、distances、metadatas、document、embeddings 等的搜索结果字典。

相关操作