milvus和langchain结合
时间: 2025-05-24 19:16:46 浏览: 16
### 集成 Milvus 和 LangChain 实现向量搜索引擎
#### 选择合适的工具和技术栈
为了实现高效的向量搜索引擎,选择适合的技术组件至关重要。Milvus作为高性能的向量数据库[^1],能够处理和检索海量向量数据;而LangChain则提供了一个灵活的框架来管理这些向量操作以及与其他AI服务集成的能力。
#### 安装必要的依赖项
首先需要安装`pymilvus`客户端库用于连接至Milvus服务器,并通过pip命令获取其他所需的Python包:
```bash
pip install pymilvus langchain faiss-cpu
```
#### 初始化 Milvus 连接并创建集合
接下来,在应用程序中初始化与Milvus实例之间的链接,并设置好相应的参数以便后续的数据插入与查询工作:
```python
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
connections.connect("default", host="localhost", port="19530")
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=768)
]
schema = CollectionSchema(fields)
collection_name = "my_collection"
milvus_collection = Collection(
name=collection_name,
schema=schema,
using='default',
shards_num=2
)
```
此部分代码片段展示了如何定义字段模式(包括ID和嵌入向量),然后利用它们构建一个新的集合对象[^2]。
#### 构建索引结构优化性能
对于大规模向量集来说,合理的索引策略有助于提高搜索效率。这里采用IVF_FLAT算法为例说明具体做法:
```python
index_params = {
'metric_type': 'L2',
'index_type': 'IVF_FLAT',
'params': {'nlist': 128}
}
milvus_collection.create_index(field_name="embedding", index_params=index_params)
```
上述配置指定了欧氏距离度量方式及聚类数目等重要选项[^4]。
#### 使用 LangChain 处理文本输入并生成 Embeddings
当准备就绪之后就可以借助于LangChain来进行实际的任务了——比如接收用户的查询请求、解析意图并将之转化为对应的特征表示形式供下一步匹配使用:
```python
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
model = AutoModel.from_pretrained('bert-base-uncased')
def get_embedding(text):
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)[0].mean(dim=1).detach().numpy()
return list(outputs.flatten())
```
这段脚本里加载了一个预训练好的BERT模型负责将自然语言转换为固定长度的实数数组即所谓的“embeddings”,这一步骤是整个流程中的核心环节之一[^3]。
#### 执行相似性查找返回结果列表
最后就是调用之前建立起来的服务接口完成最终的目标—找到最接近给定样本的一组记录:
```python
search_param = {"metric_type": "L2", "params": {"nprobe": 10}}
query_vector = [get_embedding(user_query)]
result = milvus_collection.search(query_vector, param=search_param, limit=5)
for entity in result[0]:
print(f"Entity ID: {entity.id}, Distance Score: {entity.distance}")
```
以上便是围绕着Milvus同LangChain相结合所展开的一个典型应用场景概述及其关键技术要点介绍。
阅读全文
相关推荐


















