最新n1n v2.0.1 正式上线!企业级大模型接口聚合平台 (LLM API Gateway),为您接入 500+ AI Models,价格低至 1 折,立即尝试

Accel 领投的 Keenable 正在为 AI 智能体构建网页索引

作者
  • avatar
    姓名
    Nino
    职业
    Senior Tech Editor

全球网页搜索的底层架构正在发生根本性的变革。二十多年来,诸如 Google 和 Bing 这样的搜索引擎一直在针对人类阅读习惯进行网页索引,其核心优化方向是视觉排版、搜索引擎优化(SEO)关键词以及广告投放。然而,随着自主 AI 智能体(AI Agents)和大语言模型(LLMs)的崛起,市场对一种全新基础设施的需求急剧增加。近日,初创公司 Keenable 宣布获得由 Accel 领投的 2600 万美元种子轮融资,正式结束隐身模式。该公司正在构建一个专为 AI 智能体设计的庞大网页搜索索引。

传统的搜索引擎索引旨在返回一系列链接,供人类点击和浏览。与此相反,AI 智能体需要结构化、干净且语义密集的文本数据,以便大语言模型能够瞬间对其进行解析。Keenable 的使命是抓取并索引公共网络,并通过专为程序化消费量身定制的高性能 API 将其开放。这一发展正值关键时刻,开发者们正在构建复杂的检索增强生成(RAG)管道和多智能体系统,这些系统需要实时、准确的全球知识,而无需承担抓取和清洗原始 HTML 的高昂开销。

从以人为中心到以智能体为中心的索引转变

要理解为什么需要 Keenable 的这种方法,我们必须审视当前搜索引擎在被 AI 调用时的局限性。当一个大语言模型智能体使用传统的搜索 API 时,它会收到赞助商链接、摘要文本和元数据的混合体。如果智能体需要深入挖掘某个页面,它必须获取原始的 HTML 页面,而这些页面通常充斥着大量的 JavaScript、CSS、追踪器和导航菜单。这种冗余信息不仅增加了延迟,还消耗了宝贵的上下文窗口 Token 资源。

以智能体为中心的索引通过预处理网页解决了这一痛点。它不存储网页的视觉布局,而是存储干净的 Markdown 格式文本、结构化的 JSON 元数据、页面中发现的 API 端点以及语义向量嵌入(Embeddings)。下表对比了这两种模式的核心差异:

特性传统搜索引擎索引 (Google/Bing)以智能体为中心的搜索索引 (Keenable)
主要用户在浏览器中阅读的人类AI 智能体和大语言模型工作流
输出格式HTML、视觉摘要、广告干净的 Markdown、结构化 JSON、向量嵌入
延迟目标亚秒级视觉加载API 响应延迟 < 100ms
数据密度低(充斥着排版和广告)高(仅包含语义内容和元数据)
集成方式网页浏览器 / 用户界面REST API、SDK、LangChain/LlamaIndex
更新频率基于 PageRank 的批量抓取实时、事件驱动的增量更新

对于构建生产级 AI 应用的开发者而言,使用针对智能体优化的索引可以减少高达 80% 的 Token 消耗,因为模型无需过滤无用的模板代码。为了最大化这些智能体的性能,开发者通常会将这些专用的搜索索引与高速 LLM 聚合器(如 n1n.ai 平台)结合使用,从而将查询路由到最快、最具性价比的模型中。

技术深挖:智能体搜索查询的剖析

当 AI 智能体执行搜索时,通常会遵循一个多步骤循环:构建查询、执行搜索、检索文档、分块(Chunking)以及知识合成。在传统架构中,这个过程非常缓慢且容易出错。而使用像 Keenable 这样的索引,智能体可以使用语义搜索参数直接查询索引,并立即获得结构化的结果。

下面我们来看看开发者如何实现一个支持搜索的 AI 智能体。在这个实现指南中,我们将使用 Python 来查询一个结构化的网页搜索索引,并将清洗后的上下文传递给托管在 n1n.ai 上的先进大语言模型,以合成最终答案。这种架构既能确保智能体获取实时的网页数据,又能保持极低的延迟和最优的 Token 消耗。

import requests
import json

# LLM 聚合器和搜索索引的配置
N1N_API_KEY = "your_n1n_api_key_here"
N1N_API_URL = "https://api.n1n.ai/v1/chat/completions"
SEARCH_API_URL = "https://api.keenable.example.com/v1/search"
SEARCH_API_KEY = "your_keenable_api_key_here"

def search_agent_index(query: str):
    """
    查询以智能体为中心的网页索引,获取结构化、干净的 Markdown 数据。
    """
    headers = {
        "Authorization": f"Bearer {SEARCH_API_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "query": query,
        "format": "markdown",  # 请求干净的 Markdown 格式而非 HTML
        "limit": 3             # 检索最相关的 3 篇文档
    }

    try:
        response = requests.post(SEARCH_API_URL, json=payload, headers=headers)
        response.raise_for_status()
        return response.json().get("results", [])
    except requests.exceptions.RequestException as e:
        print(f"搜索出错: {e}")
        return []

def generate_answer_with_context(query: str, search_results: list):
    """
    将查询和检索到的网页上下文通过 n1n.ai 发送给大语言模型。
    """
    # 从干净的搜索结果中构建上下文块
    context_blocks = []
    for idx, result in enumerate(search_results):
        context_blocks.append(f"来源 [{idx+1}]: {result.get('title')}\n链接: {result.get('url')}\n内容:\n{result.get('content')}")

    context = "\n\n---\n\n".join(context_blocks)

    system_prompt = (
        "你是一个先进的 AI 研究助手。请严格根据提供的网页搜索上下文,"
        "合成一个清晰、准确且简练的答案。请使用 [来源编号] 的格式注明出处。"
    )

    user_prompt = f"用户查询: {query}\n\n检索到的上下文:\n{context}"

    headers = {
        "Authorization": f"Bearer {N1N_API_KEY}",
        "Content-Type": "application/json"
    }

    # 使用 n1n.ai 托管的高性能模型(例如 deepseek-v3)
    payload = {
        "model": "deepseek-v3",
        "messages": [
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_prompt}
        ],
        "temperature": 0.2,
        "max_tokens": 1000
    }

    try:
        response = requests.post(N1N_API_URL, json=payload, headers=headers)
        response.raise_for_status()
        return response.json()["choices"][0]["message"]["content"]
    except requests.exceptions.RequestException as e:
        print(f"LLM API 出错: {e}")
        return "生成回答时出错。"

# 示例执行
if __name__ == "__main__":
    user_query = "Accel 领投 Keenable 的最新融资进展是什么?"
    print(f"正在执行搜索: '{user_query}'...")

    # 步骤 1: 从索引中检索结构化数据
    results = search_agent_index(user_query)

    # 步骤 2: 使用 n1n.ai 的大模型聚合服务生成回答
    if results:
        answer = generate_answer_with_context(user_query, results)
        print("\n生成的回答:")
        print(answer)
    else:
        print("未找到相关的搜索结果。")

构建 AI 优先网页索引的架构挑战

为 AI 智能体构建索引绝非简单地剥离 HTML 标签。它需要解决一系列复杂的分布式系统和机器学习难题:

  1. 动态内容与单页应用(SPAs):现代网页有很大一部分依赖于 JavaScript 框架(如 React、Vue、Angular)来渲染内容。Keenable 必须在大规模环境下运行无头浏览器(Headless Browsers)来执行 JavaScript,并在索引之前捕获渲染后的状态。在不让基础设施成本飙升的前提下高效完成这一过程,是一个巨大的工程挑战。

  2. 语义化表示:传统的搜索引擎索引依赖于关键字匹配(如 TF-IDF、BM25)。而以智能体为中心的索引必须在支持稀疏 Token 索引的同时,支持密集向量嵌入(Dense Vector Embeddings)。这使得混合搜索(Hybrid Search)成为可能,让智能体能够基于概念含义而非精确字词匹配来查找信息。

  3. 实时同步:AI 智能体经常被部署用于处理需要最新数据的任务,如财务分析、新闻监控或股票追踪。抓取工具必须识别高频变动的网站并对其进行持续重新索引,利用增量压缩技术来最小化带宽消耗。

  4. Robots.txt 与爬虫伦理:随着网站所有者对 AI 抓取工具的抵制日益增加,索引平台必须在尊重网站所有者意愿的同时提供有价值的数据。Keenable 的方法包括与出版商建立合作关系,可能通过提供归属权引用或 API 驱动的变现途径来实现共赢。

为什么开发者生态正在转向 API 聚合器

随着像 Keenable 这样的专业工具涌现以解决数据获取问题,大语言模型的执行层也必须随之进化。开发者无法承受被绑定在单一 LLM 供应商身上的风险。模型更新频繁,今天在推理能力上领先的模型,明天就可能被更便宜、更快速的竞争对手超越。

这正是像 n1n.ai 这样的平台变得不可或缺的原因。通过将包括 OpenAI、Anthropic、DeepSeek 以及开源模型在内的多个 LLM 供应商聚合到一个统一的 API 中,n1n.ai 允许开发者对其智能体查询进行动态路由。如果智能体需要高超的推理能力来合成搜索结果,它可以将查询路由到 Claude 3.5 Sonnet;如果它只需要快速分类,则可以路由到轻量级的 Llama-3 模型。这种路由过程无缝发生,确保了最大化的在线时间和成本效益。

构建支持搜索的 AI 智能体的专家建议

  • 实施激进的缓存策略:网页搜索查询往往具有重复性。为搜索结果实现一个缓存层(如 Redis)可以显著降低 API 成本并减少延迟。
  • 使用混合搜索:将关键字搜索(用于产品代码或名称等精确匹配)与语义搜索(用于概念性查询)结合起来,以获得最佳的检索精度。
  • 格式控制:始终要求您的搜索 API 返回 Markdown。大语言模型在训练过程中接触了大量的 Markdown 文档,解析这种格式的效果远好于纯文本或原始 HTML。
  • Token 预算控制:密切监控检索到的搜索数据大小。如果检索到的文档过长,在将其输入到主 LLM 上下文窗口之前,先执行一步摘要提取。

总结

Keenable 以 2600 万美元的融资规模走出隐身模式,凸显了专为人工智能构建的底层基础设施层正在蓬勃发展。通过专门为 AI 智能体索引网页,他们正在解决 RAG 和智能体工作流中的主要瓶颈之一。当与 n1n.ai 这样灵活的 API 聚合器结合使用时,开发者们现在拥有了构建快速、博学且极具成本效益的自主系统所需的一切工具。

立即在 n1n.ai 获取免费 API 密钥。