You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Redis Vector Database存储OpenAI Embeddings及Azure部署方案

问题解答

一、术语澄清

  • Redis:基础开源键值对数据库,主打高性能缓存、会话存储等场景,原生不支持向量存储与查询,需通过扩展模块实现向量能力。
  • Redis Vector Database:并非独立产品,指启用了Redis Stack(包含RedisSearch & Query、RedisJSON等模块)的Redis实例,具备向量存储、相似度检索、混合查询(向量+结构化数据)能力。
  • Azure Cache for Redis:Azure托管的标准Redis服务,提供基础/标准/高级三层。仅高级层支持启用Redis Stack,从而具备向量数据库功能,适合中小规模场景。
  • Azure Redis Enterprise:Azure上的企业级Redis托管服务,默认集成Redis Stack全部功能,支持更高吞吐量、低延迟、全球分布式部署,适合生产级大规模向量应用场景。

二、存储OpenAI Embeddings到Redis向量库的步骤

前提:确保你的Redis实例已启用Redis Stack(云版免费试用账户通常默认开启),且已能通过Python连接数据库。

  1. 安装依赖
pip install redis openai numpy
  1. Python代码实现
import openai
import redis
import numpy as np
from redis.commands.search.field import VectorField, TextField
from redis.commands.search.indexDefinition import IndexDefinition, IndexType

# 配置OpenAI API密钥
openai.api_key = "你的OpenAI API密钥"

# 配置Redis连接参数
REDIS_HOST = "你的Redis主机地址"
REDIS_PORT = 你的端口号
REDIS_PASSWORD = "你的Redis密码"
INDEX_NAME = "embeddings_index"
VECTOR_DIM = 1536  # OpenAI text-embedding-ada-002的向量维度

# 连接Redis客户端
r = redis.Redis(
    host=REDIS_HOST,
    port=REDIS_PORT,
    password=REDIS_PASSWORD,
    decode_responses=False
)

# 创建向量索引(仅首次运行需要)
try:
    r.ft(INDEX_NAME).create_index(
        fields=[
            TextField("content"),
            VectorField("embedding", "FLAT", {"TYPE": "FLOAT32", "DIM": VECTOR_DIM, "DISTANCE_METRIC": "COSINE"})
        ],
        definition=IndexDefinition(prefix=["doc:"], index_type=IndexType.HASH)
    )
except Exception as e:
    print("索引已存在或创建失败:", e)

# 获取OpenAI Embedding
def get_openai_embedding(text):
    response = openai.Embedding.create(
        input=text,
        model="text-embedding-ada-002"
    )
    return response['data'][0]['embedding']

# 存储向量到Redis
text_content = "需要生成向量的文本内容"
embedding = get_openai_embedding(text_content)
embedding_bytes = bytes(np.array(embedding, dtype=np.float32))
r.hset(
    "doc:1",  # 文档唯一标识,可自定义
    mapping={
        "content": text_content,
        "embedding": embedding_bytes
    }
)

# 相似度查询示例
query_text = "查询的文本"
query_embedding = get_openai_embedding(query_text)
query_embedding_bytes = bytes(np.array(query_embedding, dtype=np.float32))

results = r.ft(INDEX_NAME).search(
    f"*=>[KNN 5 @embedding $query_embedding AS score]",
    query_params={"query_embedding": query_embedding_bytes},
    return_fields=["content", "score"]
)

for doc in results.docs:
    print(f"内容: {doc.content}, 相似度得分: {doc.score}")

注意:代码中需替换你的API密钥、Redis连接信息;若使用其他OpenAI embedding模型,需调整VECTOR_DIM对应维度。

三、在Azure上部署Redis向量数据库

方法1:通过Azure Cache for Redis(高级层)部署

  1. 登录Azure门户,搜索并创建「Azure Cache for Redis」实例。
  2. 在「定价层」选择高级层(仅高级层支持Redis Stack),按需选择节点大小。
  3. 在「高级」配置页,启用「Redis Stack」选项,确认包含RedisSearch模块。
  4. 完成网络、访问策略等配置后,创建实例。实例运行后,在「访问密钥」页获取连接字符串,用于后续连接。

方法2:通过Azure Redis Enterprise部署

  1. 登录Azure门户,搜索并创建「Azure Redis Enterprise」集群。
  2. 配置集群的区域、节点大小、副本数等基础参数,完成集群创建。
  3. 在集群页面创建新数据库,启用「向量搜索」功能(默认已包含在企业级数据库中)。
  4. 配置数据库的访问密钥、网络规则,获取数据库连接字符串即可使用。

内容的提问来源于stack exchange,提问作者Surya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:53:36