# RedisVectorStore **Repository Path**: naclnezn/redis-vector-store ## Basic Information - **Project Name**: RedisVectorStore - **Description**: RedisVectorStore用于管理和查询Redis数据库中的矢量数据 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-29 - **Last Updated**: 2024-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # redis-vector-store ## 介绍 Redis 搜索和查询 扩展了 Redis OSS 的核心功能,并允许您将 Redis 用作向量数据库 - 在哈希或 JSON 文档中存储向量和关联的元数据 - 检索向量 - 执行向量搜索 ## 向量检索(Vector Search)的核心原理 向量检索(Vector Search)的核心原理是通过将文本或数据表示为高维向量,并在查询时根据向量的相似度进行搜索。在你的代码中,向量检索过程涉及以下几步: ### 匹配的原理: - 检索的核心是将文本或数据转换成向量,在高维向量空间中查找与查询最相似的向量。 - 在存储数据时将指定的字段通过嵌入模型生成了向量。 - 在检索时,查询文本被向量化,然后与 Redis 中存储的向量进行相似度比较,找到相似度最高的向量(即相关的文档)。 ### 关键点: - 嵌入模型 将文本转换成向量。 - 相似度计算 通过余弦相似度或欧几里得距离来度量相似性。 - Top K 返回相似度最高的 K 个文档。 ### 具体过程 1. 向量化数据: 当你将 JSON 中的字段存入 Redis 时,向量化工具(例如 vectorStore)会将指定的字段转换为高维向量。每个字段的内容会通过某种嵌入模型(如 Word2Vec、BERT、OpenAI Embeddings 等)转换成向量表示。每个向量表示的是该字段内容的语义特征。 2. 搜索时的向量生成: 当执行 SearchRequest.query(message) 时,系统会将输入的 message 转换为一个查询向量。这一步是通过同样的嵌入模型,将查询文本转换为与存储在 Redis 中相同维度的向量。 3. 相似度匹配: vectorStore.similaritySearch(request) 函数使用了一个向量相似度计算方法来查找最相似的向量。这通常是通过 余弦相似度 或 欧几里得距离 来度量查询向量和存储向量之间的距离。然后返回与查询最相似的前 K 个文档,即 withTopK(topK) 所指定的 K 个最相关的结果。 4. 返回匹配的文档: 匹配的结果是根据相似度得分排序的 List。这些文档是你最初存储在 Redis 中的记录,包含了 JSON 中指定的字段。 ## 安装环境 ```shell mkdir -p /home/docker/redis-stack/data chmod 777 /home/docker/redis-stack ``` ```shell docker run -d \ --name redis-stack \ -p 6379:6379 \ -p 8001:8001 \ -v /home/docker/redis-stack/data:/data \ -e REDIS_ARGS="--requirepass mypassword" \ redis/redis-stack:7.4.0-v0 ``` mypassword 为 redis 密码 上面的命令还在端口8001上公开了RedisInsight 可以通过将浏览器指向 http:// localhost:8001 来使用RedisInsight。 ## 新增DNS解析 现访问 ```shell https://site.ip138.com/raw.Githubusercontent.com/ ``` 找到ip地址,并添加到hosts文件 ```shell 199.232.68.133 raw.githubusercontent.com ``` 第一次启动时会下载一堆依赖