所有文章 > 日积月累 > Serper API LangChain 集成:优化搜索与知识生成
Serper API LangChain 集成:优化搜索与知识生成

Serper API LangChain 集成:优化搜索与知识生成

RAG 技术与 Serper API 的结合

RAG(Retrieval Augmented Generation)技术是通过检索用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答的一种技术。它主要解决了大型语言模型(LLMs)在处理知识密集型任务时可能遇到的挑战,如幻觉、知识过时和缺乏透明、可追溯的推理过程等。通过与 Serper API 的结合,RAG 能够在无需重新训练的情况下实现知识更新和扩展。

Serper API 提供了 Google 搜索的 API 接口,能够帮助用户实现高效的网络搜索。这种集成使得 RAG 技术能够借助实时的网络信息,提供更准确的答案,降低推理成本,并实现外部记忆功能。

环境配置与 Serper API 的集成

为了实现 Serper API 与 LangChain 的集成,首先需要在开发环境中配置必要的工具和依赖。以下是配置过程的详细步骤:

配置基础环境

在 Intern Studio 服务器上部署项目时,首先需要配置开发机系统。创建开发机时,使用 Cuda11.7-conda 镜像,并在资源配置中选择 30% A100 * 1 的选项。

进入开发机后,使用以下命令激活 Python 虚拟环境:

studio-conda -o internlm-base -t InternLM2_Huixiangdou
conda activate InternLM2_Huixiangdou

下载模型和依赖

复制所需的模型文件,并安装所需的 Python 依赖:

cd /root && mkdir models

ln -s /root/share/new_models/maidalun1020/bce-embedding-base_v1 /root/models/bce-embedding-base_v1
ln -s /root/share/new_models/maidalun1020/bce-reranker-base_v1 /root/models/bce-reranker-base_v1
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b

pip install protobuf==4.25.3 accelerate==0.28.0 aiohttp==3.9.3 auto-gptq==0.7.1

使用 LangChain 和 Serper API 进行搜索

Serper API 提供了强大的 Google 搜索功能,可以集成到 LangChain 中,以增强搜索能力。以下是使用案例:

配置 Serper API

首先,在 Serpapi 官网上注册并获取 API key。然后,替换配置文件中的 ${YOUR-API-KEY} 为实际的 API key。

集成 Serper API 到 LangChain

通过以下代码,可以将 Serper API 集成到 LangChain 中,实现搜索功能:

import os
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.llms import OpenAI
from langchain.agents import AgentType

os.environ['OPENAI_API_KEY'] = 'your-openai-key'
os.environ['SERPAPI_API_KEY'] = 'your-serper-api-key'

llm = OpenAI(temperature=0, max_tokens=2048)

tools = load_tools(['serpapi'])

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

agent.run('今天星期几?,历史上的今天发生了哪些大事')

茴香豆与 RAG 的结合

茴香豆作为一种新型应用,利用 RAG 技术实现了非参数化的知识更新。通过搭建 RAG 助手,不仅解决了信息不足的问题,还提升了回答的准确性。

创建知识库

在不重新训练的情况下,可以利用现有的文档作为新增知识数据源。在茴香豆项目中,使用 InternLM 的文档作为基础,创建向量数据库以实现知识检索。

运行知识助手

通过提取知识库特征并创建向量数据库,可以测试 RAG 助手的效果。以下是运行示例:

sed -i '74s/.*/ queries = ["huixiangdou 是什么?", "茴香豆怎么部署到微信群", "今天天气怎么样?"]/' /root/huixiangdou/huixiangdou/main.py

cd /root/huixiangdou/
python3 -m huixiangdou.main --standalone

茴香豆进阶功能

除了基础的 RAG 功能,茴香豆还支持远程模型调用和网络搜索等高级功能。这些功能可以通过配置文件进行灵活设置。

开启网络搜索

启用 Serper 的 API,可以让茴香豆从网络中获取实时信息,并将其与本地知识库结合,生成更丰富的回答。

利用 Gradio 搭建网页 Demo

通过 Gradio,可以快速搭建一个网页对话 Demo,展示茴香豆的功能。以下是实现步骤:

pip install gradio==4.25.0 redis==5.0.3 flask==3.0.2 lark_oapi==1.2.4

cd /root/huixiangdou
python3 -m tests.test_query_gradio

FAQ

问:如何配置 Serper API?

答:首先在 Serpapi 注册并获取 API key,然后在配置文件中替换 ${YOUR-API-KEY} 为实际的 key。

问:如何提高 RAG 的检索效率?

答:通过优化向量数据库和使用高效的重排序模型,可以显著提高检索效率。

问:茴香豆如何支持多语言?

答:茴香豆可以通过配置不同的语言模型来支持多语言,具体配置见 config.ini 文件。

问:如何在茴香豆中集成网络搜索?

答:需要在配置文件中启用 web_search 模块,并填写 Serper API 的 key。

问:茴香豆支持哪些大模型?

答:茴香豆支持 InternLM、GPT-4、Deepseek 等多种大模型,具体配置可在 config.ini 中查看。

通过本文的介绍,希望读者能够对 Serper API 和 LangChain 的集成有更深入的了解,并在自己的项目中实现高效的搜索与知识生成。

#你可能也喜欢这些API文章!