向量数据库集成(Chroma/Pinecone/Milvus)

📅 2026/7/14 12:00:49
向量数据库集成(Chroma/Pinecone/Milvus)
多模态AIAgent开发实践 邓立国、周驰岷、邓淇等 清华大学出版社【行情 报价 价格 评测】-京东《多模态AI Agent开发实践》1~6章试读-CSDN博客多模态特征向量的高效存储与快速访问依赖于向量数据库。本节将重点讲解LangChain与三种主流向量数据库Chroma、Pinecone、Milvus的集成方法结合多模态特征向量实现特征存储、批量插入、数据查询等核心操作适配qwen-vl-plus大模型的多模态推理需求所有案例均适配指定依赖版本。说明Chroma为本地向量数据库无须部署适合开发测试Pinecone、Milvus为云端/分布式向量数据库适合生产环境需提前注册账号并获取API密钥。5.3.1 向量数据库集成基础准备1. 额外依赖安装针对三种向量数据库pip install chromadb pinecone-client pymilvus #分别对应三种向量数据库2. Pinecone云端数据库配置1注册Pinecone账号#访问官网https://app.pinecone.io#使用邮箱注册账号支持免费套餐#登录控制台进入API Keys页面#创建新的API Key复制保存仅显示一次。2通过控制台创建Pinecone索引#登录Pinecone控制台点击Indexes→Create Index#填写以下信息Name如my-indexDimension向量维度如1536需与embedding模型匹配Metric相似度度量如cosinePod Type如p1.x1免费层可用Replicas1默认#点击创建等待状态变为Ready或者通过Python SDK创建Pinecone索引from pinecone import Pineconepc Pinecone(api_keyYOUR_API_KEY)pc.create_index(namemy-index,dimension1024,metriccosine,spec{serverless: {cloud: aws, region: us-east-1}})3配置Pinecone的.env文件# Pinecone配置PINECONE_API_KEYyour_api_key_herePINECONE_ENVyour_envPINECONE_ENVIRONMENTus-east-1PINECONE_INDEX_NAMEmy-indexPINECONE_DIMENSION10243. Milvus云端数据库配置1注册/登录Zilliz Cloud账号#访问官网#国际版https://cloud.zilliz.com#中国版https://cloud.zilliz.com.cn#注册/登录#使用邮箱或GitHub/Google账号注册。#完成邮箱验证。#选择套餐#新用户通常有Serverless免费额度推荐开发测试使用。#进入控制台后选择Serverless或Dedicated集群类型。2获取URI、Token写入.env文件MILVUS_URIyour_uri; MILVUS_TOKENyour_token3创建集群与集合CollectionMilvus的层级结构为集群Cluster→数据库Database→集合Collection。注意Pinecone的Index对应Milvus的Collection。访问控制台点击 Create Cluster创建集群#配置选项Region选择离你应用服务器最近的区域如aws-us-west-2。Type选择Serverless免运维按量付费/免费额度。Name输入集群名称如my-milvus-cluster。点击Create等待状态变为Running。你可以通过控制台UI或代码创建集合。推荐首次使用代码创建以便自动化。#若需在UI创建#进入集群详情页点击Connect获取连接信息。#使用Attu (可视化工具)或代码创建Collection。#设置向量维度Dimension和相似度度量Metric Type。4获取API密钥与连接信息在Zilliz Cloud控制台集群详情页获取以下信息Public EndpointURI位置Cluster Details → Public Endpoint。格式https://in01-xxxxx.api.gcp-us-west1.zillizcloud.comAPI KeyToken位置Cluster Details → API Key标签页。操作点击Generate API Key复制保存仅显示一次。Database Name默认为default也可自定义。5Milvus .env文件配置# Milvus连接配置MILVUS_URIhttps://in01-xxxxx.api.gcp-us-west1.zillizcloud.comMILVUS_TOKENyour_zilliz_api_key_hereMILVUS_DATABASEdefault#业务配置MILVUS_COLLECTION_NAMEmy_rag_collectionMILVUS_VECTOR_DIMENSION1536MILVUS_METRIC_TYPECOSINE#应用通用配置APP_ENVdevelopmentDEBUGTrue4. 基础数据准备承接5.2节的数据分割与特征提取结果使用text_chunks文本分割片段、text_embeddings文本特征向量、img_embedding图片特征向量、audio_embeddings音频特征向量。5.3.2 Chroma本地向量数据库集成开发测试首选Chroma是轻量级本地向量数据库无须部署可直接集成到LangChain适合多模态智能体开发测试代码示例# Chroma向量数据库集成多模态特征存储与查询from langchain.vectorstores import Chromafrom langchain_community.embeddings import QwenEmbeddings#初始化嵌入模型与Chroma数据库embeddings QwenEmbeddings(api_keyos.getenv(QWen_API_KEY))# 1.创建/加载Chroma数据库persist_directory为本地存储路径chroma_db Chroma(embedding_functionembeddings,persist_directory./chroma_multimodal_db, #本地存储目录collection_namemultimodal_collection #集合名称用于区分多模态数据)# 2.批量插入多模态特征向量与对应数据#插入文本数据特征向量文本片段chroma_db.add_texts(textstext_chunks, embeddingstext_embeddings, metadatas[{type: text} for _ in text_chunks])#插入图片数据特征向量图片描述chroma_db.add_texts(texts[img_description], embeddings[img_embedding], metadatas[{type: image, image_path: industrial_test.jpg}])#插入音频数据特征向量音频转写文本chroma_db.add_texts(textsaudio_chunks, embeddingsaudio_embeddings, metadatas[{type: audio} for _ in audio_chunks])#持久化数据库确保数据保存到本地chroma_db.persist()print(Chroma数据库集成完成已插入多模态特征向量)# 3.多模态特征查询以文本查询为例检索相似的多模态数据query 工业巡检管道泄漏检测方法query_embedding embeddings.embed_query(query)#检索Top3相似数据results chroma_db.similarity_search_by_vector(query_embedding, k3)print(\nChroma查询结果Top3)for i, result in enumerate(results, 1):print(f{i}.数据类型{result.metadata[type]}内容{result.page_content[:100]}...)5.3.3 Pinecone云端向量数据库集成生产环境适配Pinecone是云端向量数据库支持大规模多模态特征存储与高速检索适合生产环境代码示例如下# Pinecone云端向量数据库集成from langchain.vectorstores import Pineconefrom langchain_community.embeddings import QwenEmbeddingsimport pinecone# 1.加载Pinecone API密钥与环境从.env文件读取pinecone_api_key os.getenv(PINECONE_API_KEY)pinecone_env os.getenv(PINECONE_ENV)# 2.初始化Pinecone客户端pinecone.init(api_keypinecone_api_key, environmentpinecone_env)# 3.连接已创建的索引需提前在Pinecone控制台创建维度与特征向量一致index_name multimodal-index# 4.初始化Pinecone向量数据库pinecone_db Pinecone.from_existing_index(index_nameindex_name,embeddingembeddings)# 5.批量插入多模态特征向量#插入文本数据pinecone_db.add_texts(textstext_chunks, embeddingstext_embeddings, metadatas[{type: text} for _ in text_chunks])#插入图片数据pinecone_db.add_texts(texts[img_description], embeddings[img_embedding], metadatas[{type: image, image_path: industrial_test.jpg}])print(Pinecone数据库集成完成已插入多模态特征向量)# 6.多模态查询query 工业巡检图像异常检测results pinecone_db.similarity_search(query, k2)print(\nPinecone查询结果Top2)for i, result in enumerate(results, 1):print(f{i}.数据类型{result.metadata[type]}内容{result.page_content[:100]}...)5.3.4 Milvus分布式向量数据库集成大规模数据适配Milvus是分布式向量数据库支持海量多模态特征存储与并行检索适合大规模多模态智能体生产环境代码示例# Milvus分布式向量数据库集成from langchain.vectorstores import Milvusfrom langchain_community.embeddings import QwenEmbeddings# 1.加载Milvus配置从.env文件读取milvus_uri os.getenv(MILVUS_URI)milvus_token os.getenv(MILVUS_TOKEN)# 2.初始化Milvus向量数据库创建/连接集合milvus_db Milvus(embedding_functionembeddings,connection_args{uri: milvus_uri, token: milvus_token},collection_namemultimodal_collection,drop_oldTrue #开发测试时可设置为True删除旧集合)# 3.批量插入多模态特征向量milvus_db.add_texts(textstext_chunks, embeddingstext_embeddings, metadatas[{type: text} for _ in text_chunks])milvus_db.add_texts(texts[img_description], embeddings[img_embedding], metadatas[{type: image, image_path: industrial_test.jpg}])milvus_db.add_texts(textsaudio_chunks, embeddingsaudio_embeddings, metadatas[{type: audio} for _ in audio_chunks])print(Milvus数据库集成完成已插入多模态特征向量)# 4.多模态查询query 音频转写的工业巡检报告results milvus_db.similarity_search(query, k2)print(\nMilvus查询结果Top2)for i, result in enumerate(results, 1):print(f{i}.数据类型{result.metadata[type]}内容{result.page_content[:100]}...)5.3.5 向量数据库集成注意事项1维度匹配确保多模态特征向量的维度与向量数据库索引的维度一致如QwenEmbeddings生成的向量为768维索引需设置为768维。2元数据规范为不同类型的多模态数据添加明确的元数据如type: text/image/audio便于后续检索时筛选数据类型。3云端数据库管控Pinecone/Milvus需注意API密钥安全通过.env文件管理控制数据插入量避免超出额度。4性能适配开发测试用Chroma生产环境根据数据量选择Pinecone中小规模或Milvus大规模、分布式。5数据持久化Chroma需调用persist()方法实现数据持久化而Pinecone/Milvus云端数据库自动持久化无须额外操作。