搜索工具集成
-
- [一、为什么要给 AI 集成搜索工具?](#一、为什么要给 AI 集成搜索工具?)
- 二、搜索工具集成的核心原理
- [三、LangChain 主流搜索工具对比](#三、LangChain 主流搜索工具对比)
-
- [1. Tavily(最推荐,AI 专用)](#1. Tavily(最推荐,AI 专用))
- [2. DuckDuckGoSearch(免费无 Key)](#2. DuckDuckGoSearch(免费无 Key))
- [3. SerpAPI / Google Search](#3. SerpAPI / Google Search)
- [4. 其他(维基/arxiv/学术)](#4. 其他(维基/arxiv/学术))
- [四、LangChain 集成搜索工具](#四、LangChain 集成搜索工具)
-
- [1. 安装依赖](#1. 安装依赖)
- [2. 配置 API Key(Tavily)](#2. 配置 API Key(Tavily))
- [3. 完整代码(Agent + 搜索)](#3. 完整代码(Agent + 搜索))
- 运行效果
- 五、搜索工具集成的关键技术点
-
- [1. 搜索意图识别(LLM 决定搜不搜)](#1. 搜索意图识别(LLM 决定搜不搜))
- [2. 查询优化(LLM 改写关键词)](#2. 查询优化(LLM 改写关键词))
- [3. 结果过滤与重排(减少噪声)](#3. 结果过滤与重排(减少噪声))
- [4. 结果压缩(避免超长)](#4. 结果压缩(避免超长))
- 六、常见集成架构(三种)
-
- [1. 基础型:直接搜索 + 回答(最简单)](#1. 基础型:直接搜索 + 回答(最简单))
- [2. Agent 型:自主决策搜索(最常用)](#2. Agent 型:自主决策搜索(最常用))
- [3. RAG+搜索:私有库+联网(最强)](#3. RAG+搜索:私有库+联网(最强))
- 七、避坑要点
- 八、总结
一、为什么要给 AI 集成搜索工具?
大模型有三大天生短板:
- 知识截止(训练后就不知道新事)
- 幻觉严重(喜欢编造事实)
- 无法获取实时/动态信息(天气、新闻、股价、最新论文)
搜索工具就是用来补全这些短板。
一句话:
LLM 负责思考,搜索工具负责找真实、实时、权威信息。
二、搜索工具集成的核心原理
流程非常简单:
- 用户提问
- LLM 判断:需要联网搜索吗?
- 需要 → 生成搜索关键词 → 调用搜索工具
- 工具返回网页摘要/结构化结果
- LLM 整理结果、回答用户
本质:LLM 决策 + 工具执行 + 结果融合
三、LangChain 主流搜索工具对比
LangChain 内置多种,新手优先选 Tavily 或 DuckDuckGo:
1. Tavily(最推荐,AI 专用)
- 专为 Agent 设计,返回干净、结构化、低噪声结果
- 可直接返回摘要、原文、相关链接
- 支持新闻/学术/通用搜索
- 有免费额度,开发首选
2. DuckDuckGoSearch(免费无 Key)
- 完全免费,不需要 API Key
- 适合学习、原型、非商用
- 结果略杂,噪声较多
3. SerpAPI / Google Search
- 结果最全,适合企业
- 需付费,配置复杂
4. 其他(维基/arxiv/学术)
- WikipediaQueryRun:查百科
- ArxivQueryRun:查论文
四、LangChain 集成搜索工具
1. 安装依赖
bash
pip install langchain langchain-community tavily-python
2. 配置 API Key(Tavily)
注册 https://tavily.com,拿到 Key:
bash
export TAVILY_API_KEY="你的Key"
3. 完整代码(Agent + 搜索)
python
from langchain_openai import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
from langchain_community.tools.tavily_search import TavilySearchResults
# 1. 初始化搜索工具
search_tool = TavilySearchResults(
max_results=5, # 返回5条
include_answer=True # 直接返回AI摘要
)
# 2. 初始化 LLM
llm = ChatOpenAI(
model="gpt-3.5-turbo",
temperature=0.1
)
# 3. 创建 Agent(能自己决定何时搜索)
agent = initialize_agent(
tools=[search_tool],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True # 显示思考过程
)
# 4. 测试:需要实时信息
response = agent.invoke({"input": "2026年5月最新AI大模型有哪些?"})
print("\n最终回答:", response["output"])
运行效果
思考:用户问最新大模型,我的知识不够,需要搜索
行动:TavilySearchResults
观察:返回2026年GPT-5、GLM-5、Qwen-3等信息
思考:信息足够,整理回答
最终回答:2026年5月最新AI大模型包括......
五、搜索工具集成的关键技术点
1. 搜索意图识别(LLM 决定搜不搜)
Prompt 里隐含规则:
- 实时问题(时间、新闻、股价)→ 必搜
- 专业/最新知识 → 必搜
- 常识/历史 → 不搜
2. 查询优化(LLM 改写关键词)
比如用户问:
"Java 最新框架 2026"
LLM 自动扩展为:
"2026年Java主流新框架、最新发布"
→ 召回更准
3. 结果过滤与重排(减少噪声)
- 去重(同 URL 只留一条)
- 过滤低质/广告
- 优先权威来源(官网、论文、权威媒体)
4. 结果压缩(避免超长)
用 LLM 把长摘要浓缩成 200--300 字,减少 Token 消耗
六、常见集成架构(三种)
1. 基础型:直接搜索 + 回答(最简单)
用户 → LLM → 搜索 → LLM 整理 → 回答
2. Agent 型:自主决策搜索(最常用)
用户 → Agent(LLM)→ 判断是否搜索 → 搜索 → 整理 → 回答
3. RAG+搜索:私有库+联网(最强)
用户 → 先查本地知识库(Chroma)→ 不足 → 联网搜索 → 融合回答
七、避坑要点
- 不要每次都搜:浪费钱、慢,只搜实时/未知问题
- 不要搜太多结果:3--5 条足够,多了噪声大
- 必须过滤广告/低质站
- 结果必须精简,否则上下文爆炸
- 用 temperature=0.1:搜索后回答要严谨
八、总结
搜索工具 = 给 AI 装上网眼,实时、真实、权威;LangChain + Tavily 是最简工业级方案。