启用关键词搜索以精确匹配包含您查询词条的分块。有关搜索模式的概述,请参阅 搜索模式。
在创建或更新实例时,将 index_method.keyword 设置为 true。您可以单独使用关键词搜索,也可以与向量搜索结合使用以进行 混合搜索。
| 字段 (Field) | 类型 (Type) | 默认值 (Default) | 描述 (Description) |
|---|---|---|---|
vector |
boolean | true |
启用向量 (语义) 搜索。 |
keyword |
boolean | false |
启用关键词 (BM25) 搜索。 |
vector 或 keyword 必须至少有一个为 true。更改 index_method 会触发对您内容的完整重新建立索引。
const instance = await env.AI_SEARCH.create({
id: "my-instance",
index_method: {
vector: false,
keyword: true,
},
});indexing_options 内部的 keyword_tokenizer 字段控制如何将文本拆分为分词。更改此项会触发完整重新建立索引。
| 值 (Value) | 默认值 (Default) | 描述 (Description) |
|---|---|---|
porter |
是 | 应用 Porter 词干提取。“running” 会匹配 “run”。最适合自然语言。 |
trigram |
否 | 重叠的 3 字符窗口。“config” 会匹配 “configuration”。最适合代码。 |
retrieval_options 内部的 keyword_match_mode 字段控制如何组合多个查询词条。
| 值 (Value) | 默认值 (Default) | 描述 (Description) |
|---|---|---|
and |
是 | 所有查询词条都必须出现。高精度,结果较少。 |
or |
否 | 任何查询词条匹配即可。高召回率,结果较多。 |
您可以按请求覆盖 keyword_match_mode:
const instance = env.AI_SEARCH.get("my-instance");
const results = await instance.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
retrieval: {
keyword_match_mode: "or",
},
},
});在 Workers 付费版 (Paid) 方案中,启用了关键词搜索的实例每个实例最高支持 500,000 个文件,而仅向量的实例为 1,000,000 个文件。请参阅 限制与定价 以获取完整的限制列表。