首页 > 教程攻略 > ai资讯 >解锁AI力量:RAG向量数据库Milvus,专为智能应用而生!

解锁AI力量:RAG向量数据库Milvus,专为智能应用而生!

来源:互联网 时间:2026-08-27 14:32:30

说到AI应用中的向量数据库,Milvus绝对是个绕不开的名字。它专为处理大规模向量数据而生,在机器学习、深度学习等场景里,提供了一套高效且强大的数据管理方案。

解锁AI力量:RAG向量数据库Milvus,专为智能应用而生!

好消息是,现在这一切变得更简单了。PyMilvus (Milvus 的 Python SDK) 直接集成了模型模块,你不再需要东拼西凑工具链,就能方便地添加嵌入和重新排序模型。数据转换成可搜索的向量?对结果重新排序以提升精度?这些操作在检索增强生成(RAG)这类场景中,集成度变得空前之高。

接下来,我们从三个核心方向展开聊聊:

  1. Rerank模型哪款最强?详解如何轻松集成到你的项目中!

  2. 如何高效选择RAG的中文Embedding模型?揭秘最佳实践与关键标准!

顺带一提,我们会通过实际案例,展示如何利用 Milvus Lite——这个可以在本地Python应用里直接运行的轻量版本来操作这些模型。它让向量搜索变得异常简便。

通常来说,向量嵌入可以分为两大类:

  • 密集嵌入

    :高维向量,大部分甚至全部元素都是非零值。它擅长捕捉文本的语义或模糊含义。

  • 稀疏嵌入

    :同样是高维向量,但绝大部分元素是零。它更适合编码精确或相邻的概念,干的是“准”活。

Milvus 两手都抓,既支持密集也支持稀疏嵌入,还提供了混合搜索功能。这个功能允许你在同一个集合内的不同向量字段上同时搜索。这些向量来源不同,代表数据的不同侧面,最终通过重新排序器将结果整合到一起,效果拔群。

下面,三个实际案例带你体验这套集成功能如何生成嵌入并进行向量搜索。

示例 1:用默认嵌入函数生成密集向量

要使用Milvus的嵌入和重排序功能,首先得安装带模型包支持的pymilvus客户端。

pip install pymilvus[model]
# 如果你用的是 zsh,命令改为:pip install 'pymilvus[model]'

这一步会安装Milvus Lite,让你能在Python应用里本地运行Milvus。它包含的模型子包,装好了所有嵌入和重排序的实用工具。

这个模型子包能力可不少,支持OpenAI、Sentence Transformers、BGE-M3、BM25、SPLADE,还有Jina AI的预训练模型。

为了演示简单,这个例子用 DefaultEmbeddingFunction,它基于 all-MiniLM-L6-v2 这个 Sentence Transformer 模型。模型大约70MB,首次使用时自动下载:

from pymilvus import model

# 这会下载 "all-MiniLM-L6-v2" 模型,很轻量。
ef = model.DefaultEmbeddingFunction()

# 要生成嵌入的数据
docs = [
 "Artificial intelligence was founded as an academic discipline in 1956.",
 "Alan Turing was the first person to conduct substantial research in AI.",
 "Born in Maida Vale, London, Turing was raised in southern England.",
]

embeddings = ef.encode_documents(docs)

print("Embeddings:", embeddings)
# 打印嵌入的维度和形状
print("Dim:", ef.dim, embeddings[0].shape)

示例 2:用 BM25 模型生成稀疏向量

BM25 是一种经典方法,通过计算单词出现频率来判断查询和文档之间的相关性。这里,我们用 BM25EmbeddingFunction 为查询和文档生成稀疏嵌入。

BM25 里有个关键步骤:计算文档的统计信息以获得 IDF(逆文档频率)。IDF 能衡量一个词信息量的大小,反映它在整个文档集中是常见还是稀有。

from pymilvus.model.sparse import BM25EmbeddingFunction

# 1. 准备一个小型语料库用于搜索
docs = [
 "Artificial intelligence was founded as an academic discipline in 1956.",
 "Alan Turing was the first person to conduct substantial research in AI.",
 "Born in Maida Vale, London, Turing was raised in southern England.",
]
query = "Where was Turing born?"
bm25_ef = BM25EmbeddingFunction()

# 2. 拟合语料库,获取 BM25 模型参数
bm25_ef.fit(docs)

# 3. 存储拟合参数,加速后续处理
bm25_ef.sa ve("bm25_params.json")

# 4. 加载保存的参数
new_bm25_ef = BM25EmbeddingFunction()
new_bm25_ef.load("bm25_params.json")

docs_embeddings = new_bm25_ef.encode_documents(docs)
query_embeddings = new_bm25_ef.encode_queries([query])
print("Dim:", new_bm25_ef.dim, list(docs_embeddings)[0].shape)

示例 3:用 ReRanker 重新排序

搜索系统的终极目标,是又快又准地找到最相关的结果。传统方法像 BM25 或 TF-IDF,主要靠关键词匹配;近来的基于嵌入的余弦相似度方法虽然简单,但有时会忽略语言的微妙之处,尤其是查询与文档之间的深层交互。

这时候就需要重新排序器(ReRanker)登场了。它本质上是一个高级AI模型,拿到初始搜索结果后,会重新评估这些结果,确保它们更贴近用户的真实意图。它不止看表面术语的匹配,而是深入分析查询与文档内容之间的互动。

我们以 Jina AI Reranker 为例:

from pymilvus.model.reranker import JinaRerankFunction

jina_api_key = ""

rf = JinaRerankFunction("jina-reranker-v1-base-en", jina_api_key)

query = "What event in 1956 marked the official birth of artificial intelligence as a discipline?"

documents = [
 "In 1950, Alan Turing published his seminal paper, 'Computing Machinery and Intelligence,' proposing the Turing Test as a criterion of intelligence, a foundational concept in the philosophy and development of artificial intelligence.",
 "The Dartmouth Conference in 1956 is considered the birthplace of artificial intelligence as a field; here, John McCarthy and others coined the term 'artificial intelligence' and laid out its basic goals.",
 "In 1951, British mathematician and computer scientist Alan Turing also developed the first program designed to play chess, demonstrating an early example of AI in game strategy.",
 "The invention of the Logic Theorist by Allen Newell, Herbert A. Simon, and Cliff Shaw in 1955 marked the creation of the first true AI program, which was capable of solving logic problems, akin to proving mathematical theorems."
]

results = rf(query, documents)

for result in results:
 print(f"Index: {result.index}")
 print(f"Score: {result.score:.6f}")
 print(f"Text: ...")

Milvus:为AI应用而生的开源矢量数据库。

优点

  1. 专为AI设计:

    目标明确,就是高效处理大规模向量数据。在机器学习、深度学习这类项目里,它的设计天然就是优势。

  2. 灵活的嵌入支持:

    密集嵌入和稀疏嵌入两手抓,支持混合搜索,还能结合重新排序器(ReRanker)提升搜索结果的相关性。

  3. 高效的检索性能:

    向量搜索速度一流,大规模数据中也能快速返回相关结果。内置的模型模块让你集成嵌入和重排序模型更省心。

  4. 开源和社区支持:

    开源项目,活跃社区,文档和持续技术支持都不缺。你可以自由定制和扩展功能。

  5. 跨平台部署:

    多种操作系统都能跑,集成到现有AI应用中也很顺手。

缺点

  1. 学习曲线较陡:

    对向量搜索或数据库经验不足的用户来说,功能和配置看着有点复杂,需要花时间上手。

  2. 资源消耗:

    专注于大规模向量数据,自然需要不少计算资源和存储空间,处理海量数据集时这点尤其明显。

  3. 依赖第三方工具:

    功能虽然丰富,但有时得结合嵌入模型、重新排序器等外部工具才能发挥全部潜力,这可能会让系统复杂一些。

使用场景

  1. 推荐系统:

    构建基于内容的推荐系统,高效向量搜索实现用户个性化推荐。电商平台上,可以根据用户浏览历史推荐商品。

  2. 自然语言处理(NLP):

    文本嵌入和相似度搜索用得最多。语义搜索、问答系统、文本分类、情感分析等都能派上用场。

  3. 计算机视觉:

    图像搜索和识别场景里,图像转成特征向量后,通过向量搜索找到相似图片。产品检索、视觉识别系统很实用。

  4. 生物信息学:

    基因序列相似度搜索、药物筛选等场景,Milvus同样适用。

  5. 智能监控:

    实时视频数据处理和分析,快速检索可疑对象或行为,效率很高。

总的来说,Milvus 这个专为 AI 应用设计的开源向量数据库,凭借强大的处理能力和灵活的嵌入支持,特别适合需要高效处理和搜索大规模向量数据的场景。虽然学习曲线和资源要求摆在那里,但它广泛的应用前景,无疑让它成为值得关注的技术工具。