使用Milvus进行文本分析过程

为了能够高效的分析文本内容且存储到milvus数据库中,我们要通过使用 PyMilvus 中的 `SentenceTransformerEmbeddingFunction` 将文本数据转换为向量。

1.首先读取一个 CSV 文件中的文本列

2.利用预训练的 `all-MiniLM-L6-v2` 模型将这些文本转换为固定维度的向量表示。

3.生成的向量随后被打印出来,并保存到一个新的 CSV 文件中,以便用于后续的机器学习或其他分析任务。

下面是代码示例:

from pymilvus import model
import pandas as pd

data = pd.read_csv('你的文件路径',encoding='utf-8')
column_data = data["列名称"]
print(column_data)

sentence_transformer_ef = model.dense.SentenceTransformerEmbeddingFunction(
    model_name='all-MiniLM-L6-v2', # Specify the model name
    device='cpu' # Specify the device to use, e.g., 'cpu' or 'cuda:0'
)
df1_array = column_data.to_numpy()

docs_embeddings = sentence_transformer_ef.encode_documents(df1_array)

print("Embeddings:", docs_embeddings)
print("Dim:", sentence_transformer_ef.dim, docs_embeddings[0].shape)

pd.DataFrame(docs_embeddings).to_csv('你要保存文件路径', encoding='utf-8', na_rep='', header=True, index=True)

在转换为向量之后我们要对其进行存储数据使用 PyMilvus 库与 Milvus 数据库交互,

1.创建索引导入 PyMilvus 所需的模块

2.使用 Pandas 读取 CSV 文件并转换数据

3.建立与 Milvus 服务器的连接;定义集合的字段模式,包括 ID、向量字段和其他文本字段;创建集合并检查是否已存在,如果存在则删除;

4.在向量字段上创建索引,指定度量类型、索引类型和参数,如 L2 距离和 IVF_FLAT 索引,并设置索引参数,如 nlist 的值。

这样,就可以在 Milvus 中高效地存储和搜索向量数据。

import pandas as pd
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility


df = pd.read_csv("你的文件路径",converters={'title_vector': lambda x: eval(x)})
df.head()

connections.connect(host='127.0.0.1', port='19530')

def create_milvus_collection(collection_name, dim):
    if utility.has_collection(collection_name):
        utility.drop_collection(collection_name)
    fields = [
             FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),		
            FieldSchema(name="title_vector", dtype=DataType.FLOAT_VECTOR, dim=384),					
            FieldSchema(name="Nationalpolicy", dtype=DataType.VARCHAR, max_length=63000),  
            FieldSchema(name="Municipalpolicy", dtype=DataType.VARCHAR, max_length=63000),  	
            FieldSchema(name="Districtpolicy", dtype=DataType.VARCHAR, max_length=63000),  				
            FieldSchema(name="InheritanceRelation", dtype=DataType.VARCHAR, max_length=63000),  
            FieldSchema(name="Connection",dtype=DataType.VARCHAR, max_length=63000),  
            FieldSchema(name="UpDown",dtype=DataType.VARCHAR, max_length=63000),  				
            FieldSchema(name="RelatedContent", dtype=DataType.VARCHAR, max_length=63000),  
            FieldSchema(name="Alteration", dtype=DataType.VARCHAR, max_length=63000),  	
            FieldSchema(name="PIRequire", dtype=DataType.VARCHAR, max_length=63000),  		
            FieldSchema(name="ImplementContent", dtype=DataType.VARCHAR, max_length=63000), 
            FieldSchema(name="CorrespondingGroup", dtype=DataType.VARCHAR, max_length=63000),  	
            FieldSchema(name="CorrespondingDomain", dtype=DataType.VARCHAR, max_length=63000),  		
            FieldSchema(name="CorrespondingDirection", dtype=DataType.VARCHAR, max_length=63000),
            FieldSchema(name="CorrespondingEC", dtype=DataType.VARCHAR, max_length=63000),  
            
    ]

    schema = CollectionSchema(fields=fields, description='search text')
    collection = Collection(name=collection_name, schema=schema)
    
    index_params = {
        'metric_type': "L2",
        'index_type': "IVF_FLAT",
        'params': {"nlist": 2096}
    }
    collection.create_index(field_name='title_vector', index_params=index_params)
    return collection

collection = create_milvus_collection('policy', 384)

在创建完索引之后就可以根据对应的列把向量数据文件上传到milvus数据库中了。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值