milvus lite快速实践
Milvus Lite 是Milvus 的轻量级版本,Milvus 是一个开源向量数据库,通过向量嵌入和相似性搜索为人工智能应用提供支持,最典型的应用场景就是 RAG(Retrieval-Augmented Generation,检索增强生成),为 RAG 系统提供了强大的向量存储和检索能力。
通过下面的实践,可以了解文本向量化与相似度匹配(语义匹配)的大概过程,了解RAG落地背后的机制。
安装 milvus lite
Milvus Lite 已包含在Milvus 的 Python SDK 中。它可以通过pip install pymilvus 简单地部署。
部署前提:
- python 3.8+;
- Ubuntu >= 20.04(x86_64 或者 arm64)
- MacOS >= 11.0(苹果 M1/M2 或者 x86_64)
安装命令如下:
pip install -U pymilvus
文本向量化
创建向量数据库
通过实例化MilvusClient ,指定一个存储所有数据的文件名来创建本地的Milvus向量数据库。例如下:
from pymilvus import MilvusClient
client = MilvusClient("milvus_demo.db")
创建 Collections
Collections类似于传统 SQL 数据库中的表格。在 Milvus 中Collections 用来存储向量及其相关元数据。创建 Collections 时,可以定义 Schema 和索引参数来配置向量规格,如维度、索引类型和远距离度量。
创建 Collections 时,至少需要设置名称和向量场的维度,未指定的参数使用默认值。
if client.has_collection(collection_name="demo_collection"):
client.drop_collection(collection_name="demo_collection")
client.create_collection(
collection_name="demo_collection",
dimension=768, # 该demo中的向量规格为768维
)
文本向量化
下载 embedding模型 为测试的文本生成向量。
首先,安装模型库,该软件包包含 PyTorch 等基本 ML 工具。如果本地环境从未安装过 PyTorch,则软件包下载可能需要一些时间。
pip install "pymilvus[model]"
用默认模型生成向量 Embeddings。Milvus 希望数据以字典列表的形式插入,每个字典代表一条数据记录,称为实体。
from pymilvus import model
# 如果访问 https://huggingface.co/ 失败,请取消注释以下路径
# import os
# os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
# 这将下载一个较小的嵌入模型 "paraphrase-albert-small-v2"(~50MB)。
embedding_fn = model.DefaultEmbeddingFunction()
# 用来搜索的文本字符串
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
vectors = embedding_fn.encode_documents(docs)
# 输出向量有768维,与创建的集合匹配。
print("Dim:", embedding_fn.dim, vectors[0].shape) # Dim: 768 (768,)
# 每个实体(entity)都有 id、向量表示、原始文本和主题标签,用于演示元数据过滤。
data = [
{
"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"}
for i in range(len(vectors))
]
print("Data has", len(data), "entities, each with fields: ", data[0].keys())
print("Vector dim:", len(data[0]["vector"]))
输出:
Dim: 768 (768,)
Data has 3 entities, each with fields: dict_keys(

最低0.47元/天 解锁文章

914

被折叠的 条评论
为什么被折叠?



