技术背景介绍
Milvus 是一个开源的向量数据库,专为嵌入相似度搜索和AI应用而构建。它通过提供统一的用户体验,简化了对非结构化数据的搜索,不论部署环境如何。Milvus 的混合搜索功能将稠密和稀疏向量搜索的优势结合在一起,为复杂搜索任务提供了更好的解决方案。
核心原理解析
Milvus 的混合搜索利用了稠密向量和稀疏向量的独特优势。稠密向量通常由深度学习模型生成,例如 OpenAI 提供的嵌入,而稀疏向量则可以通过经典信息检索算法如 BM25 生成。通过将这两种方法结合,Milvus 可以实现更加准确和高效的搜索结果。
代码实现演示
下面是如何使用 Milvus 实现混合向量检索的完整示例。
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_milvus.retrievers import MilvusCollectionHybridSearchRetriever
from langchain_milvus.utils.sparse import BM25SparseEmbedding
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from pymilvus import (
Collection,
CollectionSchema,
DataType,
FieldSchema,
WeightedRanker,
connections,
)
# 确保已经安装必要的包
# %pip install --upgrade --quiet pymilvus[model] langchain-milvus langchain-openai
# 初始化 Milvus 连接
CONNECTION_URI = "http://localhost:19530"
connections.connect(uri=CONNECTION_URI)
# 定义字段和数据类型
fields =