Redis Vector Database 介绍与 LangChain 集成指南
开发人员选择 Redis 的原因包括其快速的性能、庞大的客户端库生态系统,以及其被主要企业部署多年的可靠性。在实践中,使用 Redis 的向量数据库功能时,可以充分利用其高性能的搜索功能以及灵活的索引方案。例如,电商推荐系统、个性化内容推送、语义搜索等,都可以利用 Redis 的高效索引能力与 LangChain 的抽象能力实现复杂的检索需求。除了这些传统的使用场景之外,Redis 还提供了额外的
Redis 是什么?
大多数从事 web 服务的开发人员对 Redis 并不陌生。Redis 是一个开源的键值存储,主要用途是缓存、消息代理和数据库。开发人员选择 Redis 的原因包括其快速的性能、庞大的客户端库生态系统,以及其被主要企业部署多年的可靠性。
除了这些传统的使用场景之外,Redis 还提供了额外的功能,例如搜索和查询能力,使用户能够在 Redis 中创建二级索引结构。这使得 Redis 可以作为一个具有缓存速度的向量数据库。
Redis 作为向量数据库的核心原理解析
Redis 使用压缩的倒排索引用于快速索引,具备低内存占用。它还支持多种高级功能,例如:
- 向量相似度搜索(支持 HNSW 和 FLAT)
- 向量范围搜索(例如,查找在查询向量半径内的所有向量)
- 增量索引,无性能损失
- 文档排名(使用 tf-idf,用户可选提供权重)
- 字段加权
- 复杂布尔查询(支持 AND、OR 和 NOT 操作符)
- 语言的自动补全建议(支持模糊前缀建议)
- 使用 Snowball 进行多语言的词干查询扩展
- 支持中文语言分词和查询(使用 Friso)
- 数字过滤和范围
- 使用 Redis 地理空间索引进行地理空间搜索
- 强大的聚合引擎
- 支持所有 utf-8 编码的文本
- 可以检索完整的文档、选定字段或仅文档 ID
- 按日期排序结果
代码实现演示
接下来,我们将展示如何将 Redis 与 LangChain 集成,并使用 redis-py 和 redisvl 进行搜索与查询。
首先,安装相关依赖:
%pip install -qU redis redisvl langchain-community
然后,通过 Docker 本地部署 Redis:
docker run -d -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
初始化 Redis 连接:
from langchain_community.vectorstores.redis import Redis
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vector_store = Redis(
redis_url="redis://localhost:6379",
embedding=embeddings,
index_name="users",
)
添加文档到向量存储:
from uuid import uuid4
from langchain_core.documents import Document
document_1 = Document(
page_content="I had chocolate chip pancakes and scrambled eggs for breakfast this morning.",
metadata={"source": "tweet"},
)
uuids = [str(uuid4())]
vector_store.add_documents(documents=[document_1], ids=uuids)
查询向量存储:
results = vector_store.similarity_search(
"LangChain provides abstractions to make working with LLMs easy", k=2
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
应用场景分析
Redis 作为向量数据库非常适合需要快速检索和查询的场景。例如,电商推荐系统、个性化内容推送、语义搜索等,都可以利用 Redis 的高效索引能力与 LangChain 的抽象能力实现复杂的检索需求。
实践建议
在实践中,使用 Redis 的向量数据库功能时,可以充分利用其高性能的搜索功能以及灵活的索引方案。同时,在集成 LangChain 时,建议根据具体应用需求选择适合的检索策略和过滤器,以优化性能和精确度。
结束语:
如果遇到问题欢迎在评论区交流。
—END—
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)