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
    
  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)
    

(二)向量搜索測試

以下代碼展示了如何執行向量搜索:

# 查詢向量
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)

三、Spring Boot 集成 Redis 向量數據庫的代碼案例

(一)環境準備

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

    <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-redis-store-spring-boot-starter</artifactId>
    </dependency>
    
  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:
    

(二)使用 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);
}

四、Redis 的 AI 應用場景

(一)實時數據緩存

Redis 的內存存儲特性使其能夠快速緩存 API 返回值,提高響應速度。例如,使用 LangChain 的 RedisCache 實現 LLM(大語言模型)的緩存功能:

set_llm_cache(RedisCache(redis_client));

(二)語義搜索與檢索

Redis 的向量數據庫功能可以用于語義搜索。例如,結合 LangChain 的 RedisVectorStore,可以實現智能搜索功能:

vector_store = RedisVectorStore(redis_client);

(三)會話持久化

Redis 可以記錄和檢索會話歷史,增強對話系統的持續性。例如,使用 LangGraph 的 langgraph-checkpoint-redis,可以實現跨會話的持久化記憶。

五、總結

Redis 的 AI 能力和緩存功能的結合,為現代應用架構提供了強大的支持。通過合理配置和使用,可以在單一實例中同時滿足緩存和向量搜索的需求,既節省了資源,又簡化了系統架構。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900155.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900155.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900155.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode435 -- 預定會議問題

0. ref 參考自 1. 題目描述 預定會議問題&#xff1a;給定我們一堆區間&#xff0c;區間不能重疊&#xff08; [ 1 , 2 ] [1,2] [1,2] 和 [ 2 , 3 ] [2,3] [2,3] 的 2 2 2 不算重疊&#xff09;&#xff0c;求最多能保留多少個區間&#xff1f; 做法&#xff1a;貪心&#…

leetcode51-N皇后

leetcode 51 思路 本題可以使用回溯算法來解決。回溯算法通過嘗試所有可能的解決方案來找到問題的解的算法&#xff0c;當發現當前的選擇無法得到有效的解決方案時&#xff0c;就回溯到上一步&#xff0c;嘗試其他的選擇。對于 N 皇后問題&#xff0c;我們可以逐行放置皇后&…

linux paste 命令

paste 是 Linux 中一個用于水平合并文件內容的命令行工具&#xff0c;它將多個文件的對應行以并行方式拼接&#xff0c;默認用制表符&#xff08;Tab&#xff09;分隔。 1. 基本語法 paste [選項] 文件1 文件2 ... 2. 常用選項 選項說明-d指定拼接后的分隔符&#xff08;默…

Linux 入門:基礎開發工具(上)vim,gcc/g++,make/makefile

目錄 一.軟件包管理器 一&#xff09;.軟件包 二&#xff09;.安裝軟件 三&#xff09;.刪除軟件 二.編輯器vim 一&#xff09;.vim的基本介紹 1.正常/普通/命令模式(Normal mode) 2.插入模式(Insert mode) 3.底行模式(last line mode) 二&#xff09;.vim的基本操作 …

在CPU服務器上部署Ollama和Dify的過程記錄

在本指南中&#xff0c;我將詳細介紹如何在CPU服務器上安裝和配置Ollama模型服務和Dify平臺&#xff0c;以及如何利用Docker實現這些服務的高效部署和遷移。本文分為三大部分&#xff1a;Ollama部署、Dify環境配置和Docker環境管理&#xff0c;適合需要在本地或私有環境中運行A…

請求被中止: 未能創建 SSL/TLS 安全通道。

需要安裝vs2019社區辦&#xff0c;下載VisualStudioSetup.exe后&#xff0c;報無法從"https://aka,ms/vs/16/release/channel"下載通道清單錯誤&#xff0c;接著打開%temp%目錄下的最新日志&#xff0c;發現日志里報&#xff1a; [27d4:000f][2025-04-04T21:15:43] …

第六課:AI繪畫進階模型

文章目錄 Part.01 文本嵌入(Embeddings)Part.02 低秩模型(LoRa)Part.03 超網絡(Hypernetwork)Part.01 文本嵌入(Embeddings) Embeddings(Textual Inversion)Checkpoint如果是字典,Embeddings就是書簽,讓檢索更加高效深度學習中Embeddings叫做嵌入式向量使用方法:下載Embeddi…

閱讀分析Linux0.11 /boot/setup.s

目錄 第一部分第二部分第三部分 該源文件功能分為三部分&#xff1a; &#xff08;1&#xff09;源文件開始部分是通過各種中斷指令&#xff0c; 初始化計算機的組成硬件&#xff0c;獲得硬件的參數&#xff0c;然后保存到段空間0X9000。該空間原來是保存加載到內存的引導扇區內…

TSMaster在新能源汽車研發測試中的硬核應用指南

——從仿真到標定&#xff0c;全面賦能智能汽車開發 引言&#xff1a;新能源汽車測試的挑戰與TSMaster的破局之道 新能源汽車的快速發展對研發測試提出了更高要求&#xff1a;復雜的電控系統、高實時性通信需求、多域融合的驗證場景&#xff0c;以及快速迭代的開發周期。傳統測…

web漏洞靶場學習分享

靶場&#xff1a;pikachu靶場 pikachu漏洞靶場漏洞類型: Burt Force(暴力破解漏洞)XSS(跨站腳本漏洞)CSRF(跨站請求偽造)SQL-Inject(SQL注入漏洞)RCE(遠程命令/代碼執行)Files Inclusion(文件包含漏洞)Unsafe file downloads(不安全的文件下載)Unsafe file uploads(不安全的文…

《Linux內存管理:實驗驅動的深度探索》【附錄】【實驗環境搭建 4】【Qemu 如何模擬numa架構】

我們在學習 linux 內核時&#xff0c;會涉及到很多 numa 的知識&#xff0c;那我們該如何在 qemu 中模擬這種情況&#xff0c;來配合我們的學習呢&#xff1f; 我們該如何模擬 如下的 numa 架構 Qemu 模擬 NUMA 架構 -M virt,gic-version3,virtualizationon,typevirt \ -cp…

YOLOv12 從預訓練邁向自主訓練,第一步數據準備

視頻講解&#xff1a; YOLOv12 從預訓練邁向自主訓練&#xff0c;第一步數據準備 前面復現過yolov12&#xff0c;使用pre-trained的模型進行過測試&#xff0c;今天來講下如何訓練自己的模型&#xff0c;第一步先準備數據和訓練格式 https://gitcode.com/open-source-toolkit/…

Keil 5 找不到編譯器 Missing:Compiler Version 5 的解決方法

用到自記&#xff1a; 下載地址&#xff1a; Keil5 MDK541.zip ?編輯https://pan.baidu.com/s/1bOPsuVZhD_Wj4RJS90Mbtg?pwdMDK5 問題描述 沒有找到 compiler version5 &#xff1a; 1. 下載 Arm Compiler 5 也可以直接點擊下載文章開頭的文件。 2. 安裝 直接安裝在KEI…

結腸鏡3D視頻數據集-C3VD論文中文版

文章目錄 標題作者摘要一、介紹1.1. 相關工作1.1.1. 內鏡重建數據集1.1.2. 注冊真實和虛擬內窺鏡圖像1.1.3. 2D-3D注冊1.2. 貢獻 二、方法2.1. 幻影模型生產2.2. 數據采集2.3. 注冊流程概述2.3.1. 數據預處理2.3.2. 目標深度估計2.3.3. 渲染深度幀2.3.4. 邊緣損失和優化 2.4. 模…

hadoop 集群的常用命令

# 查看HDFS目錄內容 hadoop fs -ls /path # 創建目錄 hadoop fs -mkdir /path/to/dir # 上傳本地文件到HDFS hadoop fs -put localfile /hdfs/path # 下載HDFS文件到本地 hadoop fs -get /hdfs/path localfile # 查看文件內容 hadoop fs -cat /hdfs/path/file # 刪除文件/…

MaxEnt物種分布建模全流程;R+ArcGIS+MaxEnt模型物種分布模擬、參數優化方法、結果分析制圖與論文寫作

融合R語言的MaxEnt模型具有以下具體優勢&#xff1a; 數據處理高效便捷 &#x1f4ca;強大的數據預處理功能&#xff1a;R語言提供了豐富的數據處理工具&#xff0c;能夠輕松完成數據清洗、篩選、轉換等操作&#xff0c;為MaxEnt模型提供高質量的輸入數據。 &#x1f310;自動…

Java基礎 4.4

1.方法快速入門 public class Method01 {//編寫一個main方法public static void main(String[] args) {//方法使用//1.方法寫好后&#xff0c;如果不去調用(使用)&#xff0c;不會輸出Person p1 new Person();p1.speak();//調用方法 p1.cal01();//調用計算方法1p1.cal02(10);…

Tiktok矩陣運營中使用云手機的好處

Tiktok矩陣運營中使用云手機的好處 云手機在TikTok矩陣運營中能夠大幅提高管理效率、降低封號風險&#xff0c;并節省成本&#xff0c;是非常實用的運營工具。TikTok矩陣運營使用云手機有很多優勢&#xff0c;特別是對于需要批量管理賬號、提高運營效率的團隊來說。以下是幾個…

指針函數、函數指針和指針函數指針的全面總結

C中指針函數、函數指針和指針函數指針的全面總結 一、核心概念區別 概念本質聲明示例核心特征指針函數返回指針的函數int* func(int);函數定義&#xff0c;返回值是指針類型函數指針指向函數的指針int (*ptr)(int);變量&#xff0c;存儲函數地址指針函數指針指向指針函數的指…

CherryStudio MCP實戰(一)filesystem篇

隨著DeepSeek的爆火&#xff0c;各行各業都在圍繞著大模型尋找新質量生產力。簡單來說&#xff0c;DeepSeek像是人的大腦&#xff0c;他可以推理&#xff0c;幫你思考一些問題&#xff0c;但是具體要做一些事情的時候&#xff0c;他還需要“手腳”來協同。MCP&#xff08;Model…