Milvus.from_documents
时间: 2025-01-16 21:07:19 浏览: 46
### 创建 Milvus 集合或索引
在构建基于文档的 Milvus 应用程序时,创建集合和索引是至关重要的步骤。以下是具体实现方法:
#### 加载必要的库并初始化环境变量
首先需要加载所需的 Python 库以及配置环境变量来访问外部服务。
```python
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
```
#### 初始化 Milvus 实例
接着启动 Milvus Lite 版本以便于快速测试与开发工作流。
```python
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
connections.connect(host='localhost', port='19530')
```
#### 定义字段模式
定义用于描述数据结构的字段列表,这一步骤对于后续的数据插入至关重要。
```python
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=768), # 假设嵌入维度为768
]
schema = CollectionSchema(fields, "Example schema for document embeddings")
collection = Collection(name="example_collection", schema=schema)
```
#### 插入文档及其元数据
遍历待处理的文档集合并将其转换成适合存入 Milvus 的格式。这里假设已经有一个名为 `docs` 的对象包含了所有要导入的文档条目。
```python
for idx, doc in enumerate(docs):
embedding = get_embedding(doc.text) # 获取文本嵌入向量的方法需自行实现
data_to_insert = {
'id': idx,
'embedding': embedding.tolist(),
**{k:v for k,v in doc.metadata.items()} # 将其他元数据作为附加属性保存下来
}
collection.insert([data_to_insert])
```
#### 构建索引
最后一步是对新建立好的表单应用合适的索引来加速查询操作效率。
```python
index_params = {"metric_type": "L2", "index_type": "IVF_FLAT", "params": {"nlist": 128}}
collection.create_index(field_name="embedding", index_params=index_params)
# 确保更改生效
collection.load()
```
通过上述过程可以成功地将一组文档转化为可以在 Milvus 上高效检索的形式[^1]。
阅读全文
相关推荐

















