向量数据库集成(Chroma/Pinecone/Milvus)
2026/7/14 12:00:46 网站建设 项目流程

多模态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控制台

点击IndexesCreate Index

#填写以下信息:

Name:如my-index

Dimension:向量维度(如1536,需与embedding模型匹配)

Metric:相似度度量(如cosine

Pod Type:如p1.x1(免费层可用)

Replicas1(默认)

#点击创建,等待状态变为Ready

或者通过Python SDK创建Pinecone索引:

from pinecone import Pinecone

pc = Pinecone(api_key="YOUR_API_KEY")

pc.create_index(

name="my-index",

dimension=1024,

metric="cosine",

spec={"serverless": {"cloud": "aws", "region": "us-east-1"}}

)

3)配置Pinecone的.env文件

# Pinecone配置

PINECONE_API_KEY=your_api_key_here

PINECONE_ENV=your_env

PINECONE_ENVIRONMENT=us-east-1

PINECONE_INDEX_NAME=my-index

PINECONE_DIMENSION=1024

3. Milvus云端数据库配置

1)注册/登录Zilliz Cloud账号

#访问官网:

#国际版:https://cloud.zilliz.com

#中国版:https://cloud.zilliz.com.cn

#注册/登录:

#使用邮箱或GitHub/Google账号注册。

#完成邮箱验证。

#选择套餐:

#新用户通常有Serverless免费额度(推荐开发测试使用)。

#进入控制台后,选择ServerlessDedicated集群类型。

2)获取URI、Token,写入.env文件

MILVUS_URI=your_uri; MILVUS_TOKEN=your_token

3)创建集群与集合(Collection)

Milvus的层级结构为:集群(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 Endpoint(URI):

位置:Cluster Details → Public Endpoint

格式:https://in01-xxxxx.api.gcp-us-west1.zillizcloud.com

API Key(Token):

位置:Cluster Details → API Key标签页。

操作:点击Generate API Key,复制保存(仅显示一次)。

Database Name:

默认为default,也可自定义。

5)Milvus .env文件配置

# Milvus连接配置

MILVUS_URI=https://in01-xxxxx.api.gcp-us-west1.zillizcloud.com

MILVUS_TOKEN=your_zilliz_api_key_here

MILVUS_DATABASE=default

#业务配置

MILVUS_COLLECTION_NAME=my_rag_collection

MILVUS_VECTOR_DIMENSION=1536

MILVUS_METRIC_TYPE=COSINE

#应用通用配置

APP_ENV=development

DEBUG=True

4. 基础数据准备

承接5.2节的数据分割与特征提取结果,使用text_chunks(文本分割片段)、text_embeddings(文本特征向量)、img_embedding(图片特征向量)、audio_embeddings(音频特征向量)。

5.3.2 Chroma本地向量数据库集成(开发测试首选)

Chroma是轻量级本地向量数据库,无须部署,可直接集成到LangChain,适合多模态智能体开发测试,代码示例:

# Chroma向量数据库集成(多模态特征存储与查询):

from langchain.vectorstores import Chroma

from langchain_community.embeddings import QwenEmbeddings

#初始化嵌入模型与Chroma数据库

embeddings = QwenEmbeddings(api_key=os.getenv("QWen_API_KEY"))

# 1.创建/加载Chroma数据库(persist_directory为本地存储路径)

chroma_db = Chroma(

embedding_function=embeddings,

persist_directory="./chroma_multimodal_db", #本地存储目录

collection_name="multimodal_collection" #集合名称(用于区分多模态数据)

)

# 2.批量插入多模态特征向量与对应数据

#插入文本数据(特征向量+文本片段)

chroma_db.add_texts(texts=text_chunks, embeddings=text_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(texts=audio_chunks, embeddings=audio_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, k=3)

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 Pinecone

from langchain_community.embeddings import QwenEmbeddings

import pinecone

# 1.加载Pinecone API密钥与环境(从.env文件读取)

pinecone_api_key = os.getenv("PINECONE_API_KEY")

pinecone_env = os.getenv("PINECONE_ENV")

# 2.初始化Pinecone客户端

pinecone.init(api_key=pinecone_api_key, environment=pinecone_env)

# 3.连接已创建的索引(需提前在Pinecone控制台创建,维度与特征向量一致)

index_name = "multimodal-index"

# 4.初始化Pinecone向量数据库

pinecone_db = Pinecone.from_existing_index(

index_name=index_name,

embedding=embeddings

)

# 5.批量插入多模态特征向量

#插入文本数据

pinecone_db.add_texts(texts=text_chunks, embeddings=text_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, k=2)

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 Milvus

from 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_function=embeddings,

connection_args={"uri": milvus_uri, "token": milvus_token},

collection_name="multimodal_collection",

drop_old=True #开发测试时可设置为True,删除旧集合

)

# 3.批量插入多模态特征向量

milvus_db.add_texts(texts=text_chunks, embeddings=text_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(texts=audio_chunks, embeddings=audio_embeddings, metadatas=[{"type": "audio"} for _ in audio_chunks])

print("Milvus数据库集成完成,已插入多模态特征向量")

# 4.多模态查询

query = "音频转写的工业巡检报告"

results = milvus_db.similarity_search(query, k=2)

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云端数据库自动持久化,无须额外操作。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询