大家好,我是工藤学编程 🦉 | 一个正在努力学习的小博主,期待你的关注 |
|---|---|
实战代码系列最新文章😉 | C++实现图书管理系统(Qt C++ GUI界面版) |
SpringBoot实战系列🐷 | 【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案 |
分库分表 | 分库分表之实战-sharding-JDBC分库分表执行流程原理剖析 |
消息队列 | 深入浅出 RabbitMQ-RabbitMQ消息确认机制(ACK) |
AI大模型 | 零基础学AI大模型之Milvus部署架构选型+Linux实战:Docker一键部署+WebUI使用 |
1、零基础学AI大模型之读懂AI大模型 2、零基础学AI大模型之从0到1调用大模型API 3、零基础学AI大模型之SpringAI 4、零基础学AI大模型之AI大模型常见概念 5、零基础学AI大模型之大模型私有化部署全指南 6、零基础学AI大模型之AI大模型可视化界面 7、零基础学AI大模型之LangChain 8、零基础学AI大模型之LangChain六大核心模块与大模型IO交互链路 9、零基础学AI大模型之Prompt提示词工程 10、零基础学AI大模型之LangChain-PromptTemplate 11、零基础学AI大模型之ChatModel聊天模型与ChatPromptTemplate实战 12、零基础学AI大模型之LangChain链 13、零基础学AI大模型之Stream流式输出实战 14、零基础学AI大模型之LangChain Output Parser 15、零基础学AI大模型之解析器PydanticOutputParser 16、零基础学AI大模型之大模型的“幻觉” 17、零基础学AI大模型之RAG技术 18、零基础学AI大模型之RAG系统链路解析与Document Loaders多案例实战 19、零基础学AI大模型之LangChain PyPDFLoader实战与PDF图片提取全解析 20、零基础学AI大模型之LangChain WebBaseLoader与Docx2txtLoader实战 21、零基础学AI大模型之RAG系统链路构建:文档切割转换全解析 22、零基础学AI大模型之LangChain 文本分割器实战:CharacterTextSplitter 与 RecursiveCharacterTextSplitter 全解析 23、零基础学AI大模型之Embedding与LLM大模型对比全解析 24、零基础学AI大模型之LangChain Embedding框架全解析 25、零基础学AI大模型之嵌入模型性能优化 26、零基础学AI大模型之向量数据库介绍与技术选型思考 27、零基础学AI大模型之Milvus向量数据库全解析 28、零基础学AI大模型之Milvus核心:分区-分片-段结构全解+最佳实践 29、零基础学AI大模型之Milvus部署架构选型+Linux实战:Docker一键部署+WebUI使用
Attu是Zilliz团队专为Milvus向量数据库打造的开源图形化管理工具,核心价值是“让Milvus操作脱离命令行,降低学习与运维成本”。
Attu支持多种安装方式,以下是不同系统的最简部署流程,核心目标:通过“IP+端口”连接Milvus服务。


docker run -p 8080:3000 -e MILVUS_URL=xxx.xxx.xxx.xxx:19530 zilliz/attu:v2.5.3Milvus提供多语言SDK(Python/Node.js/GO/Java),其中Python SDK(PyMilvus)是最常用的开发工具,以下是实战步骤。
核心要求:PyMilvus版本需与Milvus服务器版本匹配(当前环境:Milvus 2.5X → PyMilvus 2.5.5)
pip install pymilvus==2.5.5执行以下命令,无报错则说明安装成功:
python -c "from pymilvus import Collection"Python操作Milvus的核心链路:连接服务 → 数据库操作 → 集合操作 → 数据操作 → 检索查询,以下是关键步骤实战。
支持两种连接方式(推荐第二种MilvusClient,语法更简洁):
# 方式1:使用connections.connect(传统方式)
from pymilvus import connections, db
# 连接远程Milvus服务(替换为你的服务IP)
conn = connections.connect(host="192.168.229.128", port=19530)
# 方式2:使用MilvusClient(推荐,Milvus 2.3+支持)
from pymilvus import MilvusClient
client = MilvusClient("http://192.168.229.128:19530")from pymilvus import connections, db
# 连接服务
connections.connect(host="192.168.229.128", port=19530)
# 1. 创建数据库(名称自定义)
db.create_database("my_rag_database")
# 2. 切换使用目标数据库
db.using_database("my_rag_database")
# 3. 列出所有数据库
all_dbs = db.list_database()
print("所有数据库:", all_dbs) # 输出:['default', 'my_rag_database']
# 4. 删除数据库(谨慎操作!)
db.drop_database("my_rag_database")Collection是Milvus中的“数据表”,Schema定义表结构(字段类型、主键、向量维度等),支持静态字段和动态字段两种模式。
数据类型 | 说明 | 示例 |
|---|---|---|
INT64 | 64位整型,常用作主键 | DataType.INT64 |
VARCHAR | 变长字符串,需指定max_length | DataType.VARCHAR(max_length=50) |
FLOAT | 单精度浮点数 | DataType.FLOAT |
FLOAT_VECTOR | 浮点型向量,需指定dim(维度) | DataType.FLOAT_VECTOR(dim=128) |
from pymilvus import connections, FieldSchema, DataType, CollectionSchema, Collection
# 1. 连接服务并切换数据库
connections.connect(host="192.168.229.128", port=19530)
db.using_database("my_rag_database")
# 2. 定义字段(静态Schema:所有字段提前声明)
fields = [
# 主键字段:id(自增或手动指定)
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
# 向量字段:dim=128(需与嵌入模型输出维度一致)
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128),
# 标量字段:文档标签
FieldSchema(name="doc_tag", dtype=DataType.VARCHAR, max_length=50)
]
# 3. 创建Schema(添加描述)
schema = CollectionSchema(
fields=fields,
description="RAG系统文档向量集合(静态字段)",
enable_dynamic_field=False # 关闭动态字段
)
# 4. 创建Collection(指定分片数,分布式场景关键)
collection = Collection(
name="static_doc_collection",
schema=schema,
shards_num=2 # 推荐值:集群节点数×2,单节点场景默认2即可
)
print("Collection创建成功!")动态Schema允许插入未定义的字段,灵活适配多变数据场景:
from pymilvus import connections, FieldSchema, DataType, CollectionSchema, Collection
# 1. 连接服务
connections.connect(host="192.168.229.128", port=19530)
db.using_database("my_rag_database")
# 2. 定义核心字段(仅声明必要字段)
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
# 3. 创建Schema(启用动态字段)
dynamic_schema = CollectionSchema(
fields=fields,
description="RAG系统动态字段集合",
enable_dynamic_field=True # 关键:开启动态字段
)
# 4. 创建Collection
dynamic_collection = Collection(
name="dynamic_doc_collection",
schema=dynamic_schema,
shards_num=2
)
# 5. 插入数据(包含未定义的动态字段color、doc_source)
data = [
{
"id": 0,
"embedding": [0.358, -0.602, 0.184, -0.263, 0.903], # 简化为5维示例
"color": "pink_8682",
"doc_source": "pdf_file_1.pdf"
},
{
"id": 1,
"embedding": [-0.334, -0.257, 0.899, 0.940, 0.538],
"color": "grey_8510",
"doc_source": "docx_file_2.docx"
}
]
# 插入数据(动态字段会自动作为键值对存储)
insert_result = dynamic_collection.insert(data=data)
print("数据插入成功,插入ID:", insert_result.primary_keys)如果觉得本文对你有帮助,欢迎点赞、收藏、关注~ 你的支持是我持续更新的动力!