【实战】 向量数据库选型参考
发布网友
发布时间:2024-10-06 06:49
我来回答
共1个回答
热心网友
时间:2024-12-05 11:43
在实施大型模型的过程中,特别是在应用RAG增强检索生成时,向量数据库的选择至关重要。本文通过实验对比了四个常见的向量数据库:Chroma、Faiss、Weaviate和Pinecore。未来计划在时间和精力允许的情况下,追加Milvus和Qdrant的实验。
实验中选用的模型要求较小,以减少空间占用,便于本地调试。从Huggingface上选择了名为all-MiniLM-L6-v2的模型,其维度为384。
HuggingFace上的模型all-MiniLM-L6-v2无法直接下载。可以通过以下两种方式之一下载模型:从摩搭(ModelScope)平台下载,或从HF-Mirror下载。
Chroma向量数据库采用SQLite作为基础,通过乘积量化技术和k-means聚类优化查询和压缩数据,以节约空间和提高查询效率。实验中,使用Python语言将文本块以Embedding向量的形式存入Chroma数据库,并基于查询文本进行相似度搜索,找到top K个相似结果。
通过实验发现,SentenceTransformer的Model基于BertModel,分词器使用BertTokenizer。检索器(Retriever)通过invoke()方法进行相关性搜索,默认使用欧拉距离计算相似度。
FAISS是* AI Research的开源数据库。实验场景与Chroma相同,源码也类似。结果显示符合预期,Langchain框架的检索器Retriever对向量数据库的相似度检索默认使用欧拉距离。
Pinecone是云向量数据库,通过apiKey接入。实验中,通过两种方式使用Pinecone向量库:通过Database->Indexes提前创建向量库,或直接在源代码中创建向量库。
Weaviate的文档相对完善,主要用于AI应用开发平台Dify。实验中,注意Weaviate版本需高于v1.23,否则无法使用grpc服务。实验场景与之前类似,通过Weaviate的GraphQL实现相关度查询。
调研并深度使用了四种常见的向量数据库:Chroma、Faiss、Pinecone、Weaviate,并对它们进行了*度对比。