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—

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐