【RAG】【vector_stores003】Amazon Neptune - Neptune Analytics向量存储
案例目标本案例展示了如何使用Amazon Neptune Analytics作为LlamaIndex的向量存储后端实现文档的向量化存储和检索功能。Amazon Neptune是一个快速、可靠、完全托管的图形数据库服务支持图形和向量搜索功能。通过本案例您将学习如何配置Neptune Analytics向量存储将文档向量化并存储到Neptune Analytics构建基于Neptune Analytics的向量索引执行向量查询并获取相关文档内容技术栈与核心依赖本案例使用的主要技术栈和依赖包括Amazon Neptune Analytics: AWS提供的图数据库服务支持向量搜索功能llama-index-vector-stores-neptune: LlamaIndex的Neptune向量存储适配器LlamaIndex: 用于构建向量索引和查询引擎的核心框架IPython: 用于在Jupyter Notebook中显示Markdown格式的查询结果环境配置在运行本案例之前需要完成以下环境配置安装依赖首先需要安装LlamaIndex的Neptune向量存储包%pip install llama-index-vector-stores-neptune注意您需要拥有一个可用的Amazon Neptune Analytics图实例并获取其图标识符(graph_identifier)。此外还需要配置AWS凭证确保您的代码可以访问Neptune服务。案例实现1. 初始化Neptune Analytics向量存储首先我们需要导入NeptuneAnalyticsVectorStore类并创建一个向量存储实例from llama_index.vector_stores.neptune import NeptuneAnalyticsVectorStore graph_identifier # 填入您的Neptune Analytics图标识符 embed_dim 1536 # 嵌入维度通常与使用的嵌入模型匹配 neptune_vector_store NeptuneAnalyticsVectorStore( graph_identifiergraph_identifier, embedding_dimension1536 )2. 加载文档接下来我们下载并加载Paul Graham的论文作为示例文档!mkdir -p data/paul_graham/ !wget https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt -O data/paul_graham/paul_graham_essay.txt # 加载文档 from llama_index.core import SimpleDirectoryReader documents SimpleDirectoryReader(./data/paul_graham).load_data()3. 构建向量索引使用Neptune向量存储创建存储上下文并基于文档构建向量索引from llama_index.core import StorageContext, VectorStoreIndex # 创建存储上下文指定使用Neptune向量存储 storage_context StorageContext.from_defaults( vector_storeneptune_vector_store ) # 基于文档和存储上下文构建向量索引 index VectorStoreIndex.from_documents( documents, storage_contextstorage_context )4. 执行查询创建查询引擎并执行查询from IPython.display import Markdown, display # 创建查询引擎 query_engine index.as_query_engine() # 执行查询并显示结果 response query_engine.query(What happened at interleaf?) display(Markdown(fb{response}/b))案例效果运行本案例后您将看到以下效果文档被成功向量化并存储到Amazon Neptune Analytics中基于向量相似度的查询能够返回与问题相关的文档内容查询结果以Markdown格式在Jupyter Notebook中清晰展示提示Neptune Analytics特别适合需要同时处理图数据和向量搜索的应用场景例如知识图谱、推荐系统和语义搜索等。它能够在一个服务中同时提供图查询和向量相似度搜索功能。案例实现思路本案例的实现思路如下环境准备: 安装必要的依赖包并准备Neptune Analytics实例的连接信息向量存储初始化: 创建NeptuneAnalyticsVectorStore实例配置图标识符和嵌入维度文档准备: 下载示例文档并使用SimpleDirectoryReader加载向量索引构建: 使用StorageContext将Neptune向量存储与LlamaIndex集成构建VectorStoreIndex查询执行: 创建查询引擎执行自然语言查询并获取相关文档内容扩展建议基于本案例您可以考虑以下扩展方向元数据过滤: 在查询时添加元数据过滤条件提高检索精度自定义嵌入模型: 集成不同的嵌入模型如Hugging Face模型或本地部署的嵌入服务批量操作: 实现批量添加、更新和删除向量数据的操作混合查询: 结合图查询和向量搜索实现更复杂的查询场景性能优化: 调整Neptune Analytics的配置参数优化大规模数据下的查询性能多模态数据: 扩展支持图像、音频等多模态数据的向量和图表示总结本案例展示了如何使用Amazon Neptune Analytics作为LlamaIndex的向量存储后端实现文档的向量化存储和检索功能。Neptune Analytics作为AWS提供的图数据库服务不仅支持传统的图查询还提供了强大的向量搜索能力特别适合需要同时处理图数据和向量搜索的应用场景。通过LlamaIndex的Neptune向量存储适配器我们可以轻松地将Neptune Analytics集成到RAG(检索增强生成)应用中构建高性能的语义搜索系统。这种结合为开发者提供了一个强大而灵活的解决方案能够处理复杂的数据关系和语义相似度查询。