本项目正积极参与AI Agent2025 全球专项赛,如果您认可我们的项目,希望能得到您的支持。您可以扫描下方图片中的二维码,为我们投出宝贵的助力票。需要注意的是,投票时间为2025 年 9 月 21 日 12:00AM - 2025 年 10 月 20 日 12:00AM,且每天都可以投一次哦。
项目主要成员目前都是学生,他们怀揣着对人工智能的热爱与追求,组成了这支充满活力与创造力的团队:
邬雨航:上海工程技术大学研二 王文政:烟台大学大三 汤政洋:山东大学大二 高静成:上海工程技术大学研二 期望能在AI Agent2025全球专项赛中取得优异成绩,同时也为人工智能技术的应用创新贡献自己的力量。

1. 鸣谢
大家好,我是上海工程技术大学的研一学生邬雨航,特别感谢对本项目的 API 支持以及宣传。同时感谢以下同学的参与:烟台大学王文政同学(特别感谢)、上海工程技术大学张恒华同学。
特别要提的是,实战营提供的免费课程、模型和算力的支持,极大地帮助了像我这样的普通学生。在此,我表示衷心的感谢!
2. 动机
目前,像 DuckDuckGo 这类免费搜索接口获取外部知识时常出现内容残缺、结果不稳定,尤其是小众问题更难拿到高质量原文;而 Bocha、Exa 等效果好的 API 又价格不菲。为此,我们开源了完全免费的 FreeKnowledge AI,在高灵活度爬取网页内容的同时,通过 InternLM2.5-7B 大模型对网页进行清洗,自动抽取出逻辑通顺、信息密度高的核心内容,既保证了知识质量,也实现了零成本调用。
相关链接:
https://github.com/InternLM/InternLM https://internlm.intern-ai.org.cn/api/document?lang=zh https://openxlab.org.cn/ https://github.com/VovyH/FreeKnowledge_AI https://pypi.org/project/FreeKnowledge-AI/

3. 项目简介
FreeKnowledge AI 是一个免费、高效、可信赖的外部知识增强搜索引擎,旨在解决大语言模型在事实准确性与动态知识方面的不足。通过融合搜索、智能筛选与大模型摘要,FreeKnowledge AI 为智能问答和知识获取提供了一条零成本的增强路径。
为什么做 FreeKnowledge AI?
大语言模型在专业、动态、长尾问题上常出现事实性幻觉或知识更新滞后的情况。现有外部检索方案依赖搜索引擎 API,免费接口往往频率受限、中文支持不足、结果相关性差,商业接口虽性能更好,但长期使用成本高昂,不利于开源和大规模应用。因此,我们提出 FreeKnowledge AI,希望在免费与高效的前提下,兼顾多语言和高质量结果,降低知识增强的门槛。
FreeKnowledge AI 能做什么:
🔍 双搜索引擎融合:结合 DuckDuckGo 与百度搜索,覆盖国际与中文语境。 📈 智能相关性评分:自动过滤低质量网页,优先排序高信噪比结果。 🥾 直接 URL 爬取:支持指定网页抓取内容。 🤖 大模型摘要与提取:基于书生·浦语大模型,提炼关键信息。
实验验证
我们首次构建了一个非开放式问答数据集(医疗和学术领域),用于评估搜索接口性能。实验结果显示:
医疗问答准确率:69.0%(BoCha API 为 43.0%) 学术问答准确率:41.0%(DuckDuckGo API 为 1.5%,BoCha API 为 7.0%)
结果表明 FreeKnowledge AI 在专业性与准确性方面均显著优于主流方案。
数据集将会上传至本项目的 Github 仓库下的 dataset 文件夹:
https://github.com/VovyH/FreeKnowledge_AI
适用人群
从事智能问答或知识增强研究与应用,寻求低成本解决方案的研究者和开发者。
关注大模型外部检索、信息过滤与开源搜索的技术爱好者。
在医疗、学术等领域需要权威信息支持的机构或个人。
4. 简单的使用方式
本地部署:
首先安装依赖(目前版本 0.3.1):
pip install FreeKnowledge-AI
初始化一系列参数,并编写一个简单的示例:
from FreeKnowledge_AI import knowledge_center
# 1.Initialize the knowledge agent
center = knowledge_center.Center()
question = "2024年上海工程技术大学研究生复试分数线"
flag = True # Flag indicates whether a large model is needed, and the output content will be more beautiful and standard.
mode = "BAIDU" # Currently only supports "BAIDU" and "DUCKDUCKGO"。
# 2.Respond to external knowledge
results = center.get_response(question, flag, mode)
for result in results:
print(f"{result}\n\n")
日志:

控制台输出:


OpenXLab 的使用
本项目已上传到 OpenXLab 平台,直接在 OpenXLab应用中心搜索 “FreeKnowledgeAI” 即可访问,应用链接:
https://openxlab.org.cn/apps/detail/wwz1111/FreeKnowledgeAI

5. 灵活的参数控制
我们允许传入各种参数以更好地控制输出,包括:
question
: 用户输入的问题 (必填)。flag
: 是否使用大型模型提取已抓取的外部知识的核心内容(默认为 True)。
注:我们默认使用的是 InternLM2.5-7B 模型。
mode
: “BAIDU”、“DUCKDUCKGO” (默认为 “DUCKDUCKGO”),或 “URL_SPECIFIC”。
注:使用“DUCKDUCKGO”时需要使用 VPN,而“BAIDU”则不需要。我们推荐使用 “DUCKDUCKGO”,因为抓取的结果更准确,但百度的响应速度会更快。
specific_url
:指定要直接抓取的确切 URL。
示例:“https://docs.python.org/3/tutorial/
model
:您可以选择要使用的大型模型(默认为 “internlm/internlm2_5-7b-chat”)。base_url
:模型的base_url。key
: 传入你自己的密钥。max_web_results
: 获取抓取的外部知识数量(默认 5)。save_format
:指定保存结果的格式。设置为 “json” 可自动将结果保存到以您的问题命名的文件中(例如,“your_question.json”)。
错误提示:
当您无法获取网站内容时,请不要担心,只需多等一会儿,因为有些网站需要验证。另一种解决方案是增加重试次数和线程休眠时间。
6. 完整示例
from FreeKnowledge_AI import knowledge_center
center = knowledge_center.Center()
question = "2025年EMNLP会议的主题是什么?"
flag = True
mode = "DUCKDUCKGO"
results = center.get_response(question, flag, mode, model="internlm/internlm2_5-7b-chat",
base_url="xxxx", key = "xxx", max_web_results = 2)
for result in results:
print(f"{result}\n\n")

可以发现 FreeKnowledge-AI 能够很好地找到最相关的内容,即“Interdisciplinary Recontextualization of NLP”。

7. 对比的方法
DuckDuckGo API
DuckDuckGo 是一个较大的搜索引擎,其英文搜索质量较好,中文搜索质量很差。(其实都很一般)
from duckduckgo_search import DDGS
from pprint import pprint
with DDGS() as ddgs:
pprint([r for r in ddgs.text("EMNLP2025年的会议主题", region='cn-zh', max_results=10)])
很不稳定:

成功时的效果:可以发现生成的内容与问题不太相关。

优点: 免费,响应速度快。
缺点: 不稳定,生成内容质量不高。
BoCha API
支持自然语言搜索的 Web Search API,能从近百亿网页和生态内容源中搜索高质量世界知识,包括新闻、图片、视频、百科、机酒、学术等。效果比 DuckDuckGO API 要好很多且稳定,但是需要付费。
相关链接:https://bochaai.com/
# BoCha AI Search Python SDK
import requests, json
from typing import Iterator
BOCHA_API_KEY = "YOUR-API-KEY"
BOCHA_API_URL = "https://api.bochaai.com/v1/ai-search"
def bocha_ai_search(
query: str,
api_key: str,
api_url: str = "https://api.bochaai.com/v1/ai-search",
freshness: str = "noLimit",
answer: bool = False,
stream: bool = False
):
""" 博查AI搜索 """
data = {
"query": query,
"freshness": freshness,
"answer": answer,
"stream": stream
}
resp = requests.post(
api_url,
headers={"Authorization": f"Bearer {api_key}"},
json=data,
stream=stream
)
if stream:
return (json.loads(line) for line in parse_response_stream(resp.iter_lines()))
else:
if resp.status_code == 200:
return resp.json()
else:
return { "code": resp.code, "msg": "bocha ai search api error." }
def parse_response_stream(resp: Iterator[bytes]) -> Iterator[str]:
"""将stream的sse event bytes数据解析成line格式"""
for line in resp:
if line:
if line.startswith(b"data:"):
_line = line[len(b"data:"):]
_line = _line.decode("utf-8")
else:
_line = line.decode("utf-8")
yield _line
response = bocha_ai_search(
api_url=BOCHA_API_URL,
api_key=BOCHA_API_KEY,
query="EMNLP2025年的会议主题",
freshness="noLimit",
answer=False,
stream=False
)
print(json.dumps(response))
对结果仔细分析可发现,虽然博查API返回的第一个结果跟问题“EMNLP2025年”相关,但是内容阐述的是征稿涉及的方向,缺少最关键的内容,即“跨学科”。其次返回的第二个结果跟 EMNLP 完全不相干。


exa API
Exa API 是作者用过所有外部知识接口里效果最好的一个,无论是内容的相关程度和排版都是最好的,但是需要付费(大概0.015美金一个问题,返回5-10个结果)。
from exa_py import Exa
exa = Exa(api_key = "xxxx")
result = exa.search_and_contents(
"2025年EMNLP会议的主题是什么?",
text = True,
num_results = 5
)
print(result)

8. 实验对比
实验设置
由于目前对于搜索引擎的评估数据集较为缺乏,目前存在的数据集大多都是开放性问答的数据,这对准确评估搜索引擎在真实复杂场景下的检索与推理能力构成了显著阻碍。
因此我们构建了覆盖多个领域的综合性评测数据集,用于作为搜索引擎评测的统一基准。该数据集包括学术搜索数据集与医疗数据集,所有查询均为非开放式且具有较高难度。
每个查询均在原始来源网站上配有可验证的答案,并经过领域专家的独立交叉校验。数据集进一步划分为基于事实的判断类问题与基于事实的简答类问题两类,我们还将持续扩展至其他学科领域,并开放更新版本。
在评测过程中,我们将各搜索引擎的输出输入至InternLM3-8B模型,由其统一对比搜索生成答案与可验证的答案,以确保结果评估的一致性与可靠性。其中Example 1和Example 2为学术领域样本示例。
Example 1:
{
"query": "EMNLP 2024的投稿主题是否包括计算社会科学与文化分析?",
"domain": "学术",
"ground_truth": true,
"answer_type": "boolean"
}
Example 2:
{
"query": "ACL 2025主题轨道的核心内容是什么?",
"domain": "学术",
"ground_truth": "聚焦自然语言处理模型的泛化能力,包括如何增强模型在组合性、结构性、跨任务、跨语言、跨领域及鲁棒性等多维度的泛化能力,探究影响泛化的因素,评估泛化能力的有效方法,以及大语言模型在泛化方面的关键局限性等",
"answer_type": "entity"
}
Example 3 和Example 4 为医疗领域样本示例。
Example 3:
{
"query": "ACL 2025主题轨道的核心内容是什么?",
"domain": "学术",
"ground_truth": "聚焦自然语言处理模型的泛化能力,包括如何增强模型在组合性、结构性、跨任务、跨语言、跨领域及鲁棒性等多维度的泛化能力,探究影响泛化的因素,评估泛化能力的有效方法,以及大语言模型在泛化方面的关键局限性等",
"answer_type": "entity"
}
Example 4:
{
"query": "根据共识,儿童脓毒性休克液体复苏的首剂液体选择是什么?推荐剂量是多少?",
"domain": "医疗",
"ground_truth": "首剂液体选择等渗晶体液,剂量为20ml/kg,于5-10分钟内静脉推注",
"answer_type": "entity"
}
实验结果
为比较 FreeKnowledge AI 与 Bocha、Duckduckgo 的效果,我们构建了一个基于人工智能判别的评估框架。具体而言,首先利用三种搜索工具分别在两个数据集上检索全部答案;随后由 AI 判定检索结果中是否包含对应的答案。若包含,则记为“是”;否则记为“否”。
实验结果如表 1 与表 2 所示。结果表明,FreeKnowledgeAI 在两个数据集上均优于其他两种主流搜索工具。特别是在包含大量时效性信息的学术数据集上,FreeKnowledgeAI 相较于 Bocha 与 Duckduckgo 分别实现了 34% 与 39.5% 的性能提升。
82/200 |
表1:学术数据集评测结果
138/200 |
表2:医疗数据集评测结果
9. 结论
FreeKnowledge-AI 是一款完全免费的 AI 知识搜索引擎。与同类免费工具相比,它返回的结果更精准、更稳定;与博查、Exa 等付费服务相比,其内容相关性毫不逊色,却无需任何费用。唯一的不足是检索耗时略长。最后,再次感谢上海人工智能实验室书生·浦语大模型对本项目的支持。欢迎大家参加ailab的哦~
-- 完 --
机智流推荐阅读:
1.
2.
3.
4.
关注机智流并加入 AI 技术交流群,不仅能和来自大厂名校的 AI 开发者、爱好者一起进行技术交流,同时还有与、、、、等。
cc | 大模型技术交流群 hf | HuggingFace 高赞论文分享群 具身 | 具身智能交流群 硬件 | AI 硬件交流群 智能体 | Agent 技术交流群