langchain Milvus
时间: 2025-05-15 18:04:32 浏览: 11
### LangChain与Milvus的集成概述
LangChain 是一种用于构建大型语言模型应用的框架,而 Milvus 则是一个专门设计用来处理大规模向量数据的数据库系统。两者的结合可以实现高效的语义检索功能[^1]。
#### 集成的关键点
为了使 LangChain 和 Milvus 能够协同工作,通常需要完成以下几个方面的配置:
- **向量化文本**:通过 LangChain 提供的功能将输入的数据转换为嵌入式表示形式(embeddings)。这些嵌入会被传递给 Milvus 进行存储和索引。
- **创建集合并插入数据到 Milvus**:利用 Python SDK 或其他支持的语言接口,在 Milvus 中定义一个新的 collection 并加载之前生成好的 embeddings 数据进去以便后续查询操作使用[^2]。
以下是具体的一个简单示例代码展示如何设置这样的环境以及执行基本搜索过程:
```python
from langchain.embeddings import HuggingFaceEmbeddings
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
# 初始化连接至本地运行的服务端实例.
connections.connect("default", host="localhost", port="19530")
def create_milvus_collection(collection_name, dim=768):
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=dim)
]
schema = CollectionSchema(fields=fields)
collection = Collection(name=collection_name, schema=schema)
index_params = {
'index_type': "IVF_FLAT",
'params': {"nlist": 128},
'metric_type':"L2"
}
collection.create_index(field_name="embedding", index_params=index_params)
create_milvus_collection('langchain_test')
model_name = "sentence-transformers/all-MiniLM-L6-v2"
encode_kwargs = {'normalize_embeddings': True}
hf = HuggingFaceEmbeddings(model_name=model_name, encode_kwargs=encode_kwargs)
texts = ["hello world", "this is a test"]
vector_list = hf.embed_documents(texts)
col = Collection('langchain_test')
mr = col.insert([[i for i in range(len(vector_list))], vector_list])
search_param = {"metric_type":"L2", "params":{"nprobe":10}}
results = col.search(data=[vector_list[0]], anns_field='embedding', param=search_param, limit=2)
print(results)
```
上述脚本展示了怎样建立一个名为 `langchain_test` 的新集合,并且把一些简单的字符串转化为 embedding 后存入其中;最后还演示了一个基础的相似度查找例子[^3]。
### 注意事项
当实际部署项目时还需要考虑更多因素比如性能优化、错误处理机制等方面的内容。另外也要注意版本兼容性问题因为不同时间发布的软件包之间可能存在差异从而影响最终效果表现。
阅读全文
相关推荐

















