【RAG】【vector_stores031】Dragonfly向量存储集成示例分析

张开发
2026/4/11 18:09:02 15 分钟阅读

分享文章

【RAG】【vector_stores031】Dragonfly向量存储集成示例分析
案例目标本案例展示了如何使用Dragonfly作为向量存储后端与LlamaIndex集成实现高效的向量检索和查询功能。Dragonfly是一个高性能的Redis兼容内存数据库特别适合作为向量存储解决方案。通过本示例用户可以了解如何配置Dragonfly作为向量存储后端使用默认和自定义索引模式执行向量相似性搜索应用元数据过滤器进行精确检索管理文档和索引的生命周期技术栈与核心依赖核心技术栈LlamaIndex- 用于构建向量索引和查询引擎的框架Dragonfly- 高性能Redis兼容内存数据库用作向量存储Redis Vector Store- LlamaIndex的Redis向量存储适配器兼容DragonflyOpenAI Embeddings- 用于生成文本向量表示Cohere Embeddings- 备选的文本嵌入模型核心依赖包llama-index llama-index-vector-stores-redis llama-index-embeddings-cohere llama-index-embeddings-openai redis环境配置1. 安装Dragonfly可以通过Docker快速启动Dragonfly实例docker run -d -p 6379:6379 --name dragonfly docker.dragonflydb.io/dragonflydb/dragonfly或者使用Dragonfly Cloud服务。2. 配置API密钥需要配置OpenAI或Cohere的API密钥import os import getpass # 配置OpenAI API密钥 oai_api_key getpass.getpass(OpenAI API Key:) os.environ[OPENAI_API_KEY] oai_api_key # 配置Cohere API密钥可选 co_api_key getpass.getpass(Cohere API Key:) Settings.embed_model CohereEmbedding(api_keyco_api_key)3. 连接Dragonflyfrom redis import Redis # 创建Dragonfly客户端连接 redis_client Redis.from_url(redis://localhost:6379)案例实现1. 基本向量存储实现使用默认配置创建向量存储和索引from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, StorageContext from llama_index.vector_stores.redis import RedisVectorStore # 加载文档 documents SimpleDirectoryReader(./data/paul_graham).load_data() # 创建向量存储 vector_store RedisVectorStore(redis_clientredis_client, overwriteTrue) # 创建存储上下文 storage_context StorageContext.from_defaults(vector_storevector_store) # 构建索引 index VectorStoreIndex.from_documents(documents, storage_contextstorage_context)2. 自定义索引模式定义自定义索引模式包括额外的元数据字段from redisvl.schema import IndexSchema custom_schema IndexSchema.from_dict({ index: { name: paul_graham, prefix: essay, key_separator: :, }, fields: [ {type: tag, name: id}, {type: tag, name: doc_id}, {type: text, name: text}, {type: numeric, name: updated_at}, {type: tag, name: file_name}, { type: vector, name: vector, attrs: { dims: 1024, algorithm: hnsw, distance_metric: cosine, }, }, ], }) # 使用自定义模式创建向量存储 vector_store RedisVectorStore( schemacustom_schema, redis_clientredis_client, overwriteTrue, )3. 查询与过滤执行基本查询和带过滤器的查询from llama_index.core.vector_stores import ( MetadataFilters, MetadataFilter, ExactMatchFilter, ) # 基本查询 query_engine index.as_query_engine() response query_engine.query(What did the author learn?) # 带过滤器的查询 retriever index.as_retriever( similarity_top_k3, filtersMetadataFilters( filters[ ExactMatchFilter(keyfile_name, valuepaul_graham_essay.txt), MetadataFilter( keyupdated_at, valuedate_to_timestamp(2023-01-01), operator, ), MetadataFilter( keytext, valuelearn, operatortext_match, ), ], conditionand, ), ) result_nodes retriever.retrieve(What did the author learn?)4. 索引管理删除文档和索引# 删除特定文档 document_id documents[0].doc_id vector_store.delete(document_id) # 删除整个索引 vector_store.delete_index()案例效果查询效果通过向量相似性搜索系统能够准确找到与查询相关的文档片段查询示例What did the author learn?返回结果The author learned that philosophy courses in college were boring to him, leading him to switch his focus to studying AI.过滤效果使用元数据过滤器可以精确控制搜索范围过滤器组合文件名paul_graham_essay.txt AND 更新时间2023-01-01 AND 文本包含learn效果只返回满足所有条件的文档片段提高搜索精度性能优势Dragonfly作为向量存储后端具有以下优势高吞吐量支持大量并发向量查询低延迟内存存储提供毫秒级响应可扩展性支持水平扩展以处理大规模数据Redis兼容性可无缝替换现有Redis部署案例实现思路架构设计本案例采用以下架构实现向量存储和检索数据准备使用Paul Graham的文章作为示例数据向量化通过OpenAI或Cohere将文本转换为向量表示存储将向量和元数据存储在Dragonfly中索引使用HNSW算法构建向量索引以支持高效搜索查询将用户查询向量化并在索引中搜索相似向量过滤基于元数据对搜索结果进行二次过滤关键技术点RedisVectorStore适配器利用LlamaIndex的Redis向量存储适配器连接Dragonfly自定义索引模式通过IndexSchema定义索引结构包括向量维度和元数据字段元数据过滤使用MetadataFilters实现精确的文档筛选生命周期管理提供文档和索引的创建、查询、删除等完整操作实现流程1. 环境准备 → 2. 数据加载 → 3. 向量存储初始化 → 4. 索引构建 → 5. 查询执行 → 6. 结果过滤 → 7. 响应生成扩展建议功能扩展混合搜索结合向量搜索和全文搜索提高搜索准确性多模态支持扩展支持图像、音频等多模态数据的向量存储实时更新实现文档的实时更新和增量索引分片策略实现大规模数据的自动分片和分布缓存优化添加查询结果缓存以提高响应速度性能优化批量操作实现批量向量化、存储和查询以提高效率异步处理使用异步API处理大规模数据索引优化调整HNSW参数以平衡查询速度和内存使用压缩技术应用向量压缩技术减少存储空间应用场景扩展企业知识库构建企业内部文档检索系统电商推荐基于商品描述的相似性推荐内容审核检测相似或重复内容智能问答构建基于文档的问答系统总结本案例展示了如何使用Dragonfly作为向量存储后端与LlamaIndex集成实现高效的向量检索功能。Dragonfly作为Redis兼容的高性能内存数据库为向量存储提供了优秀的性能和可扩展性。通过本示例我们学习了如何配置和连接Dragonfly数据库如何使用默认和自定义索引模式如何执行向量相似性搜索和元数据过滤如何管理文档和索引的生命周期Dragonfly向量存储解决方案特别适合需要高性能、低延迟向量检索的应用场景如实时推荐系统、智能问答和内容检索等。通过结合LlamaIndex的强大功能可以快速构建生产级的向量搜索应用。

更多文章