Redis 与 AI:从缓存到智能搜索的融合之路

简介: Redis 已从传统缓存系统发展为强大的 AI 支持平台,其向量数据库功能和 RedisAI 模块为核心,支持高维向量存储、相似性搜索及模型服务。文章探讨了 Redis 在实时数据缓存、语义搜索与会话持久化中的应用场景,并通过代码案例展示了与 Spring Boot 的集成方式。总结来看,Redis 结合 AI 技术,为现代应用提供高效、灵活的解决方案。

Redis 与 AI:从缓存到智能搜索的融合之路

在当今数字化时代,Redis 不仅是一个高性能的缓存系统,更是一个强大的 AI 支持平台。Redis 通过其向量数据库功能和 AI 工具,为现代应用提供了独特的技术优势。

一、Redis 的 AI 能力

(一)向量数据库功能

Redis 的向量数据库功能是其 AI 能力的核心。它支持以下功能:

  1. 存储高维向量数据:Redis 可以存储向量及其相关的元数据,这些数据可以存储在哈希或 JSON 文档中。
  2. 执行相似性搜索:通过向量搜索(KNN 查询),Redis 可以快速找到与目标向量最相似的向量。
  3. 支持向量范围查询:允许用户基于向量距离进行范围查询。
  4. 元数据过滤功能:在执行向量搜索时,可以结合其他条件进行筛选,例如根据用户 ID 或类别过滤结果。

(二)RedisAI 模块

RedisAI 是 Redis 的一个模块,旨在将机器学习和深度学习带入 Redis 生态系统。它的主要特性包括:

  1. 张量存储:支持存储多维数组(张量),这些张量可以直接用作模型的输入或输出。
  2. 模型服务:支持加载和执行来自 TensorFlow、PyTorch 和 ONNX 的预训练模型。
  3. 脚本执行:通过 TorchScript 提供在 CPU 或 GPU 上执行预处理和后处理操作的能力。
  4. DAG 执行:允许定义和执行包含多个操作的有向无环图(DAG),实现复杂的推理管道。
  5. GPU 加速:支持 GPU 执行,充分利用硬件加速能力。

(三)Redis for AI

Redis for AI 是 Redis 提供的一套工具,旨在帮助开发者更高效地构建和部署 AI 应用。它包括:

  1. 向量数据库:提供世界上最快的向量数据库,支持高效的相似性搜索。
  2. 缓存解决方案:提供先进的缓存功能,减少对大型语言模型的依赖,降低成本并提升性能。
  3. 实时架构(RAG):支持基于检索增强生成(Retrieval Augmented Generation)的应用,提升智能体的推理能力和响应速度。

二、Redis 作为向量数据库的运行测试代码

(一)环境准备

  1. 安装 Redis Stack
    使用 Docker 安装 Redis Stack:

    docker run -d --name redis-stack -p 6379:6379 redis/redis-stack:latest
    
    AI 代码解读
  2. 准备数据
    下面的代码展示了如何将数据存储到 Redis 中,并创建向量字段:

    import redis
    import numpy as np
    from redis.commands.search.field import TextField, VectorField
    from redis.commands.search.indexDefinition import IndexDefinition, IndexType
    from redis.commands.search.query import Query
    from sentence_transformers import SentenceTransformer
    
    # 连接 Redis
    client = redis.Redis(host="localhost", port=6379, decode_responses=True)
    
    # 存储向量数据
    keys = ["doc:1", "doc:2"]
    embeddings = np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]], dtype=np.float32)
    for key, embedding in zip(keys, embeddings):
        client.hset(key, mapping={
         "embedding": embedding.tobytes()})
    
    # 创建索引
    schema = (
        TextField("id", no_stem=True, as_name="id"),
        VectorField(
            "embedding",
            "FLAT",
            {
         "TYPE": "FLOAT32", "DIM": 3, "DISTANCE_METRIC": "L2"},
            as_name="embedding",
        ),
    )
    definition = IndexDefinition(prefix=["doc:"], index_type=IndexType.HASH)
    client.ft("idx:docs").create_index(fields=schema, definition=definition)
    
    AI 代码解读

(二)向量搜索测试

以下代码展示了如何执行向量搜索:

# 查询向量
query_embedding = np.array([0.1, 0.2, 0.3], dtype=np.float32)
query = (
    Query("(*)=>[KNN 2 @embedding $query_embedding AS score]")
    .sort_by("score")
    .return_fields("id", "score")
    .dialect(2)
)
results = client.ft("idx:docs").search(query, query_params={
   "query_embedding": query_embedding.tobytes()})
for doc in results.docs:
    print(doc)
AI 代码解读

三、Spring Boot 集成 Redis 向量数据库的代码案例

(一)环境准备

  1. 添加依赖
    pom.xml 文件中添加以下依赖:

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-redis-store-spring-boot-starter</artifactId>
    </dependency>
    
    AI 代码解读
  2. 配置 Redis
    application.properties 文件中配置 Redis:

    spring.ai.vectorstore.redis.uri=redis://localhost:6379
    spring.ai.vectorstore.redis.index=default-index
    spring.ai.vectorstore.redis.prefix=default:
    
    AI 代码解读

(二)使用 Redis 向量数据库

以下代码展示了如何在 Spring Boot 应用程序中使用 Redis 向量数据库:

@Autowired
private VectorStore vectorStore;

@PostMapping("/embedding")
public ResultEntity<Boolean> embedding(@RequestParam MultipartFile file) throws Exception {
   
    TikaDocumentReader tikaDocumentReader = new TikaDocumentReader(new InputStreamResource(file.getInputStream()));
    List<Document> splitDocuments = new TokenTextSplitter().apply(tikaDocumentReader.read());
    vectorStore.add(splitDocuments);
    return ResultUtils.success(true);
}

@GetMapping("/query")
public List<Document> query(@RequestParam String query) {
   
    return vectorStore.similaritySearch(query);
}
AI 代码解读

四、Redis 的 AI 应用场景

(一)实时数据缓存

Redis 的内存存储特性使其能够快速缓存 API 返回值,提高响应速度。例如,使用 LangChain 的 RedisCache 实现 LLM(大语言模型)的缓存功能:

set_llm_cache(RedisCache(redis_client));
AI 代码解读

(二)语义搜索与检索

Redis 的向量数据库功能可以用于语义搜索。例如,结合 LangChain 的 RedisVectorStore,可以实现智能搜索功能:

vector_store = RedisVectorStore(redis_client);
AI 代码解读

(三)会话持久化

Redis 可以记录和检索会话历史,增强对话系统的持续性。例如,使用 LangGraph 的 langgraph-checkpoint-redis,可以实现跨会话的持久化记忆。

五、总结

Redis 的 AI 能力和缓存功能的结合,为现代应用架构提供了强大的支持。通过合理配置和使用,可以在单一实例中同时满足缓存和向量搜索的需求,既节省了资源,又简化了系统架构。

目录
打赏
0
4
4
0
145
分享
相关文章
创新场景丨下一个iPhone 时刻,AI+AR 加速虚实融合世界的到来
仅仅以大模型通用能力帮助 AR 眼镜实现了多个场景下的交互还不够,关键在于大模型没有针对 AR 眼镜的需求做深度的定制和匹配。
Redis--缓存击穿、缓存穿透、缓存雪崩
缓存击穿、缓存穿透和缓存雪崩是Redis使用过程中可能遇到的常见问题。理解这些问题的成因并采取相应的解决措施,可以有效提升系统的稳定性和性能。在实际应用中,应根据具体场景,选择合适的解决方案,并持续监控和优化缓存策略,以应对不断变化的业务需求。
112 29
Redis应用—8.相关的缓存框架
本文介绍了Ehcache和Guava Cache两个缓存框架及其使用方法,以及如何自定义缓存。主要内容包括:Ehcache缓存框架、Guava Cache缓存框架、自定义缓存。总结:Ehcache适合用作本地缓存或与Redis结合使用,Guava Cache则提供了更灵活的缓存管理和更高的并发性能。自定义缓存可以根据具体需求选择不同的数据结构和引用类型来实现特定的缓存策略。
138 16
Redis应用—8.相关的缓存框架
PhotoDoodle:设计师必备!AI一键生成装饰元素,30+样本复刻风格+无缝融合的开源艺术编辑框架
PhotoDoodle 是由字节跳动、新加坡国立大学等联合推出的艺术化图像编辑框架,能够通过少量样本学习艺术家的独特风格,实现照片涂鸦和装饰性元素生成。
85 1
PhotoDoodle:设计师必备!AI一键生成装饰元素,30+样本复刻风格+无缝融合的开源艺术编辑框架
Redis缓存设计与性能优化
Redis缓存设计与性能优化涵盖缓存穿透、击穿、雪崩及热点key重建等问题。针对缓存穿透,可采用缓存空对象或布隆过滤器;缓存击穿通过随机设置过期时间避免集中失效;缓存雪崩需确保高可用性并使用限流熔断组件;热点key重建利用互斥锁防止大量线程同时操作。此外,开发规范强调键值设计、命令使用和客户端配置优化,如避免bigkey、合理使用批量操作和连接池管理。系统内核参数如vm.swappiness、vm.overcommit_memory及文件句柄数的优化也至关重要。慢查询日志帮助监控性能瓶颈。
78 9
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
写在2025 MWC前夕:AI与移动网络融合的“奇点时刻”
2025年MWC前夕,AI与移动网络融合迎来“奇点时刻”。上海东方医院通过“思维链提示”快速诊断罕见病,某金融机构借助AI识别新型欺诈模式,均展示了AI在推理和学习上的飞跃。5G-A时代,低时延、大带宽特性支持端云协同,推动多模态AI感知能力提升,数字孪生技术打通物理与数字世界,助力各行业智能化转型。AI赋能移动网络,实现智能动态节能和优化用户体验,预示着更聪明、绿色、高效的未来。
Dify与DeepSeek的深度融合——构建您的专属AI助手
在当今数据驱动、AI为王的时代,Dify与DeepSeek作为领先的AI开发工具和大模型引擎,为企业和个人提供高效智能的解决方案。Dify是面向AI应用开发的低代码平台,集成预训练模型、可视化界面和无缝部署功能;DeepSeek则是高性能、低成本的开源大语言模型,具备多轮推理能力。两者结合并通过私有化部署,确保数据安全与合规,极大提升开发效率和业务生产力。阿里云计算巢提供了两者的私有化部署方案,帮助用户快速搭建专属AI应用。
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
174 29
演讲实录:中小企业如何快速构建AI应用?
AI时代飞速发展,大模型和AI的应用创新不断涌现,面对百花齐放的AI模型,阿里云计算平台大数据AI解决方案总监魏博文分享如何通过阿里云提供的大数据AI一体化平台,解决企业开发难、部署繁、成本高等一系列问题,让中小企业快速搭建AI应用。

热门文章

最新文章