[利用Lantern和LangChain实现高效的RAG搜索]

69 阅读2分钟
## 引言

随着大数据时代的到来,如何快速而准确地检索信息成为一个重要课题。本文介绍如何使用开源向量数据库Lantern结合LangChain工具,实现RAG(检索-生成)方法进行高效信息检索。通过此方法,你可以在PostgreSQL数据库中进行向量搜索和嵌入生成。

## 主要内容

### 环境设置

在开始之前,需要确保设置相关环境变量并获取API密钥。

1. **OpenAI API设置**
   - 访问你的OpenAI账户API密钥页面,创建一个新的密钥。
   - 设置环境变量:
     ```bash
     export OPENAI_API_KEY=<your_openai_api_key>
     ```

2. **Lantern API设置**
   - 前往你的Lantern项目的API设置页面,找到LANTERN_URL和LANTERN_SERVICE_KEY。
   - 设置环境变量:
     ```bash
     export LANTERN_URL=<your_lantern_project_url>
     export LANTERN_SERVICE_KEY=<your_service_role_api_key>
     ```

### 设置Lantern数据库

如果你还没有设置Lantern数据库,可以按照以下步骤操作:

1. 访问 [https://lantern.dev](https://lantern.dev) 创建你的Lantern数据库。
2. 使用SQL客户端运行以下脚本,将数据库设置为向量存储:
   
   ```sql
   -- 创建存储文档的表
   create table
     documents (
       id uuid primary key,
       content text, -- 对应Document.pageContent
       metadata jsonb, -- 对应Document.metadata
       embedding REAL[1536] -- 1536适用于OpenAI嵌入,可根据需要更改
     );
   
   -- 创建文档搜索函数
   create function match_documents (
     query_embedding REAL[1536],
     filter jsonb default '{}'
   ) returns table (
     id uuid,
     content text,
     metadata jsonb,
     similarity float
   ) language plpgsql as $$
   #variable_conflict use_column
   begin
     return query
     select
       id,
       content,
       metadata,
       1 - (documents.embedding <=> query_embedding) as similarity
     from documents
     where metadata @> filter
     order by documents.embedding <=> query_embedding;
   end;
   $$;

使用LangChain

  1. 安装LangChain CLI:

    pip install -U langchain-cli
    
  2. 创建LangChain项目:

    langchain app new my-app --package rag-lantern
    
  3. 在你的server.py文件中添加以下代码:

    from rag_lantern.chain import chain as rag_lantern_chain
    
    add_routes(app, rag_lantern_chain, path="/rag-lantern")
    

可选:配置LangSmith

LangSmith能帮助监控和调试LangChain应用。注册LangSmith并设置环境变量:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # 如果未指定,默认为"default"

启动服务

在项目目录中,通过以下命令启动LangServe实例:

langchain serve

访问地址:

代码示例

以下是如何在代码中使用模板:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/rag-lantern")

常见问题和解决方案

  • 网络限制导致访问不稳定:考虑使用API代理服务,确保API调用的稳定性。

  • 数据库配置错误:确保所有SQL脚本正确执行,并检查Lantern服务的配置。

总结和进一步学习资源

RAG方法结合Lantern和LangChain提供了高效的信息检索解决方案。通过设置向量数据库和使用LangChain工具,你可以大幅提高数据库查询的性能和准确性。以下是一些进一步学习的资源:

参考资料

  1. Lantern 官方网站
  2. OpenAI 官方文档

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

---END---