Cloudflare AI Search:让智能体直接搜索你的文件和网站

2026-08-06 52 预计阅读时间: 1 分钟
来源: blog.cloudflare.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:8 分钟

当智能体需要回答企业内部问题时,真正困难的往往不是生成答案,而是找到可信、最新、属于当前组织的数据。Cloudflare AI Search 的定位很直接:把它指向自己的文件和网站,就能创建面向这些数据的搜索能力,让智能体拥有一个针对专属知识库的搜索引擎。

从“拼装搜索链路”到直接接入数据

传统做法通常需要自行组合数据抓取、文本切分、向量化、索引、检索和结果拼接等组件。每一层都可能带来额外的配置和运维成本,智能体开发者还要处理数据更新、权限边界以及搜索结果格式等问题。

AI Search 的核心价值,是减少这些 Cloudflare 基础能力之间的胶水代码。开发者可以把注意力放在三个问题上:

  • 哪些文件和网站内容应该被搜索;
  • 智能体在什么场景下调用搜索;
  • 搜索结果如何参与最终回答。

这并不意味着搜索可以完全脱离数据治理。数据源的范围、更新频率、访问权限和内容质量,仍然决定了智能体回答的可靠程度。

搜索结果是智能体的工作材料

将 AI Search 接入智能体时,建议把搜索当作一个明确的工具调用,而不是让模型凭空“回忆”企业知识。一个基本流程可以是:

  1. 用户提出问题;
  2. 智能体判断是否需要查询专属数据;
  3. 调用 AI Search 获取相关片段;
  4. 将搜索结果作为上下文交给模型;
  5. 生成回答,并尽量保留来源信息。

这种设计有两个实际好处。其一,模型可以根据实时索引内容回答问题,而不是依赖训练数据。其二,搜索和生成职责分离,出现错误时更容易定位:是没有找到正确文档,还是模型误读了检索结果。

实践中应当限制上下文大小,并要求模型区分“搜索结果明确说明的内容”和“无法从数据中确认的内容”。对于政策、合同、操作手册等高风险资料,还应在回答中展示文档名称、更新时间或内部引用标识。

一个可改造的调用示例

下面的示例假设你的部署提供一个兼容 JSON 的搜索接口。接口路径和字段名需要按照实际 AI Search 集成方式调整;示例重点是展示如何把搜索封装成智能体工具。运行前设置 AI_SEARCH_ENDPOINTAI_SEARCH_TOKEN

import json
import os
import sys
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError


def search_private_data(query: str, limit: int = 5) -> list[dict]:
    endpoint = os.environ["AI_SEARCH_ENDPOINT"]
    token = os.environ["AI_SEARCH_TOKEN"]

    payload = json.dumps({"query": query, "limit": limit}).encode("utf-8")
    request = Request(
        endpoint,
        data=payload,
        method="POST",
        headers={
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json",
        },
    )

    try:
        with urlopen(request, timeout=15) as response:
            data = json.load(response)
    except (HTTPError, URLError) as exc:
        raise RuntimeError(f"search request failed: {exc}") from exc

    # 按实际响应结构修改这里,例如 data["results"]。
    return data.get("results", [])


if __name__ == "__main__":
    question = " ".join(sys.argv[1:]).strip()
    if not question:
        raise SystemExit("usage: python search.py 'your question'")

    for item in search_private_data(question):
        title = item.get("title", "untitled")
        text = item.get("text", "")
        print(f"[{title}]\n{text}\n")

可以这样运行:

export AI_SEARCH_ENDPOINT="https://your-search-endpoint.example/search"
export AI_SEARCH_TOKEN="replace-with-your-token"
python search.py "如何申请远程办公?"

如果接入的是支持工具调用的模型,可以把 search_private_data 的参数描述为 querylimit,并在系统提示词中规定:只有搜索结果足够支持结论时才回答;没有相关结果时明确说明无法确认。这样能减少模型把通用常识误包装成公司内部规定。

数据范围和成本需要一起评估

AI Search 降低了搜索基础设施的搭建门槛,但采用前仍要做几项检查:

  • 数据边界:只接入确实允许被智能体检索的文件和网站,避免把草稿、个人资料或受限内容混入公共搜索范围。
  • 更新策略:确认内容发生变化后多久能反映到搜索结果。对频繁更新的数据,过期索引会直接影响回答。
  • 权限模型:搜索结果不能突破原始数据的访问权限。需要为不同用户或不同智能体设计清晰的授权边界。
  • 结果质量:用真实问题集测试召回效果,尤其关注同义词、缩写、产品名和中英文混合查询。
  • 价格模型:Cloudflare 正在预览新的定价模型。上线前应使用预计的数据规模、查询量和调用模式估算成本,并关注预览阶段条款可能发生变化。

适合怎样开始

比较稳妥的路径是选择一个边界明确的场景,例如内部文档问答、产品帮助中心或团队运维手册。先接入少量高质量数据,记录搜索命中率、无结果比例、回答引用准确性和单次查询成本,再决定是否扩大数据范围。

采用清单可以压缩为四项:

  • 确定允许搜索的数据源;
  • 为智能体定义清晰的搜索工具契约;
  • 用真实问题验证结果质量和权限行为;
  • 根据预览定价和实际查询量评估长期成本。

AI Search 的意义不只是“多了一个搜索接口”,而是让专属数据更容易成为智能体可以调用的基础能力。真正的工程收益,取决于数据治理、工具边界和评测体系是否同步建立。


相关推荐