跳转到内容
搜索文档

AI Search 工作原理

最后更新 查看 MarkdownAgent 设置

AI Search 是一项托管搜索服务。连接网站、R2 bucket 或上传你自己的文档,AI Search 将为你的内容建立索引以支持自然语言查询。

AI Search 包含两个核心流程:

  • 建立索引 (Indexing): 一个异步流程,将您的内容转换为用于搜索的向量和关键词索引。当您连接数据源或上传文件时,建立索引会自动运行。
  • 查询 (Querying): 一个由用户查询触发的同步流程。它使用向量搜索、关键词搜索或两者结合来检索最相关的内容,并可选择生成响应。

建立索引的工作原理

当您连接数据源或通过 Items API 上传文件时,建立索引会自动开始。

以下是建立索引期间发生的过程:

  1. 数据摄取 (Data ingestion): AI Search 从您连接的数据源读取数据,或接收通过 Items API 上传的文件。
  2. Markdown 转换: AI Search 使用 Workers AI 的 Markdown 转换支持的数据类型 转换为结构化的 Markdown。这确保了不同文件类型之间的一致性。对于图像,Workers AI 用于执行对象检测,然后进行视觉到语言的转换,将图像转换为 Markdown 文本。请参阅 图像如何转换 以了解详细信息。
  3. 分块 (Chunking): 提取的文本被 分块 成更小的片段,以提高检索的粒度。
  4. 嵌入 (Embedding): 使用 Workers AI 的嵌入模型对每个分块进行嵌入,将内容转换为向量。
  5. 关键词索引: 启用关键词搜索时,每个分块也会针对 BM25 关键词匹配进行索引。
  6. 存储: 向量、关键词索引和内容将被存储并准备好用于搜索。

对于连接了数据源的实例,AI Search 会定期自动检查更新并对更改建立索引。对于使用 内置存储 的实例,新文件会在上传时立即建立索引。

查询的工作原理

建立索引完成后,AI Search 即可实时响应最终用户的查询。

以下是查询流水线的工作原理:

  1. 从 AI Search API 接收查询: 当您向 AI Search 的 Chat CompletionsSearch 端点发送请求时,查询工作流开始。
  2. 查询重写 (可选): AI Search 提供了使用 Workers AI 的大语言模型 (LLM) 之一来 重写输入查询 的选项,通过将原始查询转换为更有效的搜索查询来提高检索质量。
  3. 对查询进行嵌入: 使用用于嵌入数据的相同嵌入模型,将重写的(或原始的)查询转换为向量。
  4. 向量搜索: 将查询向量与存储的向量进行匹配,以查找语义相似的内容。
  5. 关键词搜索 (可选): 启用混合搜索时,BM25 关键词搜索将与向量搜索并行运行。
  6. 融合 (可选): 使用混合搜索时,向量和关键词结果将使用配置的融合方法进行合并。
  7. 重排序 (可选): 交叉编码器 (cross-encoder) 模型通过共同评估查询和文档来重新对结果进行评分。请参阅 重排序 以了解详细信息。
  8. 内容检索: 返回最相关的分块及其源内容。如果您使用的是 Search 端点,内容将在此时返回。
  9. 响应生成: 如果您使用的是 Chat Completions 端点,文本生成模型将使用检索到的内容生成响应。请参阅 系统提示 (System prompt) 以了解详细信息。

何时使用 AI Search 与 Vectorize

AI Search 构建在 Vectorize 之上,并在其周围添加了其余的搜索流水线。当您想要自己管理向量时使用 Vectorize,当您想要对内容进行托管搜索时使用 AI Search。

功能 (Capability) AI Search Vectorize
什么是 (What it is) 对您内容的托管端到端搜索 供您构建的向量数据库
您提供给它 (You give it) 文件,或已连接的数据源 您自己生成的向量
分块与嵌入 (Chunking and embeddings) 为您自动处理 您需要生成并插入它们
建立索引 (Indexing) 自动执行,持续同步 您需要 upsert 和管理向量
检索 (Retrieval) 向量和关键词 (混合)、重排序、元数据过滤 带有元数据过滤的向量相似度搜索
生成的回答 (Generated answers) 可选,内置 未包含
最佳适用场景 (Best when) 您希望快速添加搜索或 RAG 您需要对检索流水线进行完全控制

这篇文档对您有帮助吗?