
接触大模型应用开发,相信我们都遇到过大模型“知识过时”和“编造信息”的痛点。哪怕是最强的基础大模型,它的知识都被冻结在某个时间节点里,问到最新新闻、实时数据、行业新规,模型很容易一本正经地胡说八道。现在我们解决这个问题,最主流的方案就是RAG检索增强生成:让大模型先去外部工具检索真实资料,再基于检索到的内容回答问题。
但传统搜索引擎并不适配大模型。网页搜索返回一大堆原始HTML、冗余广告、导航栏内容,大模型要自己清洗、筛选,浪费大量token,还容易拿到无效信息。于是在带着问题探索出路,发现Tavily专门为大模型设计的检索引擎,它不是给人看的搜索引擎,而是给AI看的搜索API。Tavily不是一个简单的网页爬虫。实际上,Tavily在底层做了检索、网页提取、信息精简、可信度过滤整套链路,直接输出大模型能直接喂入prompt的结构化文本。

Tavily是一款面向大语言模型的AI原生搜索API服务,核心目标就是解决大模型联网检索的难题。普通搜索引擎的目标用户是人,返回的是网页链接、摘要snippet,我们需要点开链接自己阅读判断。而Tavily的目标用户是大模型,它的整套流程都是为AI服务:接收自然语言查询,自动执行搜索、网页内容抽取、信息降噪、内容压缩,返回精简干净的文本片段,直接丢给LLM做回答。简单一句话概括:谷歌给人看网页,Tavily给AI喂素材。
它属于RAG体系里外部联网检索组件,和向量数据库检索不是一回事。向量数据库检索,检索的是你自己提前上传、离线入库的私有文档;而Tavily是实时互联网检索,查询互联网上公开的最新信息,两者经常搭配使用。
Tavily提供两种检索模式:基础搜索和深度搜索。
在Tavily出现之前,开发者想让大模型联网,一般有两种方案,各自都有明显短板。
第一种:调用谷歌等搜索API,拿到链接,再自己写爬虫去抓取网页。
第二种:直接调用内置联网能力的大模型,比如自带搜索的GPT。
而Tavily一次性解决这些痛点:

但这里也要客观说明,Tavily本身是SaaS云服务,不是开源框架。我们需要调用它的云端API,有额度和计费,无法直接私有化部署。这一点是后面选择中文替代方案时,最关键的考量点。
不适合的场景:内网私有文档检索、大规模离线文档库查询、需要极高并发且不能走公网API的私有化项目。这类场景就不能用Tavily,要选择国内自研检索框架。
Tavily的整套检索链路,分为5个步骤,我们一步步拆解。

1.1 Query改写与理解
1.2 搜索引擎召回
1.3 网页Fetch与正文抽取
1.4 内容压缩、排序与可信度打分
1.5 结构化结果返回
Tavily提供基础搜索(Search)和深度搜索(Search Deep)。
我们可以根据问题复杂度动态切换两种模式,简单问题用基础搜索,复杂调研自动切深度搜索。
Tavily优势很突出,但也有无法忽略的短板,做项目选型一定要考虑。
Tavily提供官方Python SDK,安装之后只需要简单几行代码就能调用。
from tavily import TavilyClient
import os
client = TavilyClient(
api_key=os.environ.get("TAVILY_API_KEY", "tvly-dev-LdaOJ-***")
)
def show(resp, label):
"""精简输出:只展示 AI 总结 + 每条的 url / 标题 / 内容前 200 字"""
print(f"\n===== {label} =====")
if resp.get("answer"):
print(f"【AI 总结】{resp['answer'][:300]}")
for i, item in enumerate(resp.get("results", []), 1):
print(f"\n[{i}] {item.get('title', '')}")
print(f" {item.get('url', '')}")
print(f" {item.get('content', '')[:200]}")
# 基础搜索(basic)
basic = client.search(
query="RAG检索增强生成最新技术进展",
max_results=3,
include_answer=True,
)
show(basic, "基础搜索")
# 深度搜索(advanced)
deep = client.search(
query="大模型Agent落地难点",
search_depth="advanced",
max_results=3,
include_answer=True,
)
show(deep, "深度搜索")返回的response里包含results数组,每一条result都有url、content、title字段,content就是清洗后的正文片段,直接拼入大模型prompt即可。
Tavily原生支持主流大模型应用框架LangChain、LlamaIndex。我们可以直接把Tavily作为工具接入Agent,Agent可以自主判断什么时候需要调用联网搜索。
在LangChain里,可以直接作为内置工具,我们以"2026年混元模型最新动态?"为问题检索实践;
import os
import sys
sys.stdout.reconfigure(encoding="utf-8")
from langchain_openai import ChatOpenAI
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_classic.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
os.environ.setdefault(
"TAVILY_API_KEY",
"tvly-dev-LdaOJ-*********"
)
# 1) 初始化大模型(接入腾讯混元大模型,TokenHub平台,OpenAI兼容接口)
api_key = os.environ.get('TENCENT_API_KEY')
llm = ChatOpenAI(
model="hy3-preview",
api_key=api_key,
base_url="https://tokenhub.tencentmaas.com/v1",
temperature=0,
)
# 2) 把 Tavily 封装成 Agent 工具
tools = [
TavilySearchResults(
max_results=3,
search_depth="advanced",
include_answer=True, # community 版只接受布尔值("advanced" 是新版 langchain-tavily 的取值)
)
]
# 3) Agent 提示词:要求基于搜索结果整理,有条理地输出
SYSTEM_PROMPT = """你是一个信息整理助手。对不知道的事实,先调用搜索工具查证,再基于搜索结果整理回答。
输出要求:
1. 先用一两句话给出直接结论(针对用户问题的核心答案)。
2. 再分点展开,每点一个小标题,用「-」列出关键信息(名称/日期/数字等)。
3. 信息冲突时以多来源一致的说法为准,并注明"来源说法不一"。
4. 每个要点后用(来源:站点名/域名)标注出处。
5. 不编造搜索结果里没有的内容;搜索结果不足以回答时明确说明。
6. 末尾用一行「参考来源:」汇总主要链接域名。"""
prompt = ChatPromptTemplate.from_messages([
("system", SYSTEM_PROMPT),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
# 4) 组装并运行
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 问一个实时问题,Agent 会自动调 Tavily
ans = executor.invoke({"input": "2026年混元模型最新动态?"})
print(ans["output"])运行过程:


最后经过混元模型整理出的结果:

LlamaIndex里Tavily 是一个QueryEngine,可以和本地向量库拼起来一起检索:
import os
from llama_index.tools.tavily_reasoning.base import TavilyToolSpec
from llama_index.core.agent import FunctionCallingAgent
from llama_index.core import Document, VectorStoreIndex
from llama_index.llms.openai import OpenAI
os.environ.setdefault(
"TAVILY_API_KEY",
"tvly-dev-LdaOJ-**********"
)
# 1) 本地私有知识库
local_docs = [Document(text="我们公司 2026 年报销制度:出差住宿上限 500 元/晚……")]
local_index = VectorStoreIndex.from_documents(local_docs)
local_query_engine = local_index.as_query_engine()
# 2) 联网搜索工具
tavily_tool = TavilyToolSpec(api_key=os.getenv("TAVILY_API_KEY")).to_tool_list()
# 3) 同时挂上本地 + 联网(LLM 接入腾讯混元大模型,TokenHub平台,OpenAI兼容接口)
api_key = os.environ.get('TENCENT_API_KEY')
llm = OpenAI(
model="hy3-preview",
api_key=api_key,
api_base="https://tokenhub.tencentmaas.com/v1",
temperature=0,
)
agent = FunctionCallingAgent.from_tools(
[*tavily_tool, local_query_engine.as_tool()],
llm=llm,
verbose=True,
)
# 问一个跨"私有+公网"的问题
agent.chat("我们公司出差住宿标准是多少?和北京市 2026 年酒店均价相比呢?")Agent遇到无法依靠内部知识回答的问题,就自动调用Tavily获取互联网信息。这也是Tavily最主流的使用场景:作为AI Agent的联网工具。
和Tavily对标,国内中文场景的工具可以分成两大类:一类是检索API服务,类似Tavily SaaS;一类是开源检索框架,可以本地私有化部署,包含网页抓取、正文抽取、RAG联网检索全套能力。Tavily核心能力 = 搜索召回 + 网页正文抽取 + 内容降噪 + 结构化输出。我们挑选的同类工具,都具备这整套能力,适配中文网页。
这一类是最值得关注的,也是国内很多企业项目替代Tavily的首选,可以部署在自己服务器,数据不出内网。
SearXNG + 自研抽取器
SearXNG是开源元搜索引擎,可以聚合百度、必应、搜狗等多个搜索引擎结果。
LlamaIndex + Trafilatura/BeautifulSoup
LlamaIndex本身是RAG应用框架,内置网页加载器,搭配Trafilatura网页正文抽取库。
BGE + 检索流水线(BGE-M3)
BGE是智谱开源的向量模型,BGE-M3支持多语言,同时支持稀疏检索+稠密检索。
国内开源项目:OpenWebSearch、SoWSearch
OpenWebSearch是国内开源的大模型联网检索系统,目标就是做中文版本Tavily。
实际应用最成熟的方案是:私有知识库向量检索 + Tavily(或中文替代检索引擎)互联网检索。 当用户提问,优先检索本地向量数据库,如果检索分数低于阈值,自动触发联网搜索。
完整执行流程:

这套混合检索,兼顾私有资料和互联网实时信息,也是现在的主流方案。Tavily在这里充当“互联网兜底检索”模块。换成中文项目,就替换成OpenWebSearch或者国内搜索API。
使用Tavily这类检索工具,并不是接入之后就完全消除幻觉,依然有工程细节需要处理。
Tavily的本质不是搜索引擎,而是一套面向大模型的检索增强服务。它抓住了传统搜索不适合AI的核心痛点:网页噪声高、抽取麻烦、token消耗大,把网页抓取、清洗、摘要、打分全部封装成API,让开发者一行代码就能给大模型插上联网能力。
但是它有明显水土不服的问题:境外服务、中文网页效果一般、无法私有化部署。所以在国内中文业务落地时,很少直接生产环境使用Tavily。我们可以选择国内云厂商的搜索API快速开发原型,或者使用OpenWebSearch这类开源项目,搭建私有化的中文检索系统,实现和Tavily一样的能力。RAG和Agent的落地,检索是根基。检索质量直接决定大模型回答的准确性,Tavily给我们展示了“AI原生检索”该是什么样子,而国内中文检索框架,则让这套思路可以稳定落地在中文业务场景。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。