网页向量化存入 milvus
时间: 2025-05-07 19:23:51 浏览: 18
### 将网页内容进行向量化处理并存储到 Milvus 中
#### 准备工作
为了实现这一目标,需要准备如下组件:
- 安装 Docker 和 Docker Compose 以便部署 Milvus 及其他依赖服务。
- 使用 `docker-compose.yml` 文件定义所需的服务配置[^3]。
```yaml
version: '3'
services:
etcd:
image: quay.io/coreos/etcd:v3.5.0
command: ...
minio:
image: milvus/minio:single-node-latest
environment:
MINIO_ROOT_USER: "minioadmin"
MINIO_ROOT_PASSWORD: "minioadmin"
milvus:
image: milvusdb/milvus:v2.3.12-cpu-d070823-9f6dfe
ports:
- "19530:19530"
- "9091:9091"
```
#### 获取网页内容并向量化
获取网页的内容可以通过 Python 库如 BeautifulSoup 或 requests-html 实现。对于文本内容的向量化,则可以采用预训练的语言模型来完成转换过程。这里推荐使用 Hugging Face Transformers 提供的各种模型来进行特征提取。
```python
from transformers import AutoTokenizer, AutoModel
import torch
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
model = AutoModel.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
def get_embedding(text):
inputs = tokenizer(text, return_tensors='pt', padding=True, truncation=True)
outputs = model(**inputs)
embeddings = torch.mean(outputs.last_hidden_state, dim=1).detach().numpy()
return embeddings.tolist()[0]
```
这段代码展示了如何加载一个预训练好的 Sentence-BERT 模型,并将其应用于给定的文字片段上以获得对应的嵌入表示形式。
#### 存储至 Milvus 数据库
一旦拥有了这些向量化的数据之后就可以通过 pymilvus SDK 来连接本地运行着的 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=384), # 假设维度为384
]
schema = CollectionSchema(fields, description="Webpage content vectors.")
collection_name = "webpages_collection"
if collection_name not in list_collections():
collection = Collection(name=collection_name, schema=schema)
data_to_insert = [[i], [get_embedding(f"example text {i}")]]
collection.insert(data_to_insert)
```
上述脚本创建了一个新的集合用于保存来自不同页面经过编码后的浮点数数组;如果该集合已经存在则跳过此步操作。最后一步就是调用 insert 方法把实际的数据写进去。
阅读全文
相关推荐


















