专业做app下载网站,重庆建设工程招投标信息网,30人的网站建设公司年利润是多少,深圳前十vi设计公司一.背景在大语言模型#xff08;LLM#xff09;、计算机视觉、推荐系统等人工智能应用落地过程中#xff0c;非结构化数据#xff08;文本、图片、音频、视频#xff09;的相似性检索成为核心需求 —— 这类数据需先通过模型转化为高维向量#xff0c;再通过向量相似性计…一.背景在大语言模型LLM、计算机视觉、推荐系统等人工智能应用落地过程中非结构化数据文本、图片、音频、视频的相似性检索成为核心需求 —— 这类数据需先通过模型转化为高维向量再通过向量相似性计算实现快速匹配。Milvus 作为开源的分布式向量数据库专为高维向量的存储、索引与相似性检索设计能够解决传统关系型数据库、键值数据库在向量处理上的性能瓶颈。企业与开发者开展 “Milvus 向量数据库使用尝试” 的需求源于传统数据存储方式在向量处理场景的痛点以及对 “高效、可扩展、低成本” 实现非结构化数据检索的核心诉求。1.传统数据存储方式处理向量的核心痛点随着 AI 应用的普及高维向量数据如文本的 Embedding 向量、图片的特征向量的规模呈指数级增长传统数据存储方式在处理这类数据时暴露出难以逾越的短板向量检索性能极差无法支撑大规模场景关系型数据库MySQL/PostgreSQL、键值数据库Redis均未针对向量相似性检索做优化若要从百万级、千万级向量中检索与目标向量最相似的 Top-K 结果需对所有向量进行全量遍历计算相似度如余弦相似度、欧氏距离时间复杂度为 O (n)。例如在百万级 768 维向量数据中全量遍历检索需数秒甚至数十秒完全无法满足实时应用如智能问答、商品推荐的毫秒级响应要求。不支持高效向量索引资源消耗过大传统数据库无法构建针对高维向量的专用索引如 IVF_FLAT、HNSW、ANNOY只能将向量以二进制或数组形式存储检索时不仅需要消耗大量 CPU 算力进行相似度计算还会占用海量内存加载向量数据导致集群资源紧张且检索效率随向量规模增长呈线性下降。分布式扩展能力不足适配海量数据难当向量数据规模达到亿级甚至十亿级时单节点数据库无法承载数据存储与检索压力而传统数据库的分布式扩展多针对结构化数据设计无法实现向量数据的分片存储、并行检索与负载均衡。例如Redis 集群虽能分片存储向量但无法跨节点协同完成相似性检索最终仍需聚合所有节点数据进行全量计算。功能单一无法适配 AI 应用的复杂需求AI 应用不仅需要向量相似性检索还需结合结构化数据进行过滤如 “检索与‘手机’相关的文本向量且发布时间在 2025 年”、向量更新 / 删除、多向量组合检索等操作。传统数据库仅能单独处理结构化数据或向量数据无法实现两者的联合查询需额外编写代码进行数据关联开发成本高且性能低下。与 AI 生态集成性差开发门槛高传统数据库缺乏与主流 Embedding 模型如 OpenAI Embedding、BERT、CLIP、AI 框架LangChain、LlamaIndex的原生集成能力开发者需手动完成向量生成、存储、检索的全流程代码开发还需自行处理向量数据的序列化、分片、容错非专业人员难以快速上手。2.Milvus 向量数据库使用尝试的核心价值Milvus 作为专为向量检索设计的数据库从底层架构上解决了传统存储方式的痛点。开发者与企业开展 “使用尝试”本质是验证其在向量存储、检索、扩展等方面的能力探索将其融入 AI 应用的可行性核心价值体现在极致的向量检索性能支撑实时应用Milvus 支持多种高性能向量索引算法可将向量检索的时间复杂度从 O (n) 降低至 O (log n) 或近似常数级。例如采用 HNSW 索引时千万级 768 维向量的 Top-K 检索响应时间可控制在 10ms 以内完全满足智能问答、实时推荐等场景的实时性要求。即使是亿级向量数据通过分布式检索也能保持毫秒级响应。专用向量索引与优化降低资源消耗Milvus 内置了针对不同场景的向量索引如 IVF_FLAT 适用于高精度检索HNSW 适用于高速度检索SCANN 适用于超大规模向量并对索引构建、相似度计算进行了底层优化如利用 GPU 加速、向量化计算。相比全量遍历索引检索可减少 90% 以上的 CPU 与内存消耗大幅降低集群部署成本。分布式架构适配海量向量数据Milvus 采用分片存储、并行检索的分布式架构支持向量数据的水平扩展可通过增加节点实现存储容量与检索性能的线性提升轻松承载亿级、十亿级甚至百亿级向量数据。同时Milvus 支持数据的动态扩容与缩容无需中断服务适配企业向量数据的快速增长。结构化与向量数据联合查询适配复杂场景Milvus 支持为向量数据附加结构化属性如文本的分类、图片的标签、数据的时间戳并提供 SQL 风格的查询语法实现 “结构化过滤 向量相似性检索” 的联合查询。深度集成 AI 生态降低开发门槛Milvus 与主流 AI 工具链深度集成支持 LangChain、LlamaIndex 等大模型应用框架的原生对接可直接作为向量存储组件使用兼容 OpenAI、Hugging Face 等主流 Embedding 模型的向量输出格式还提供 Python/Java/Go 等多语言 SDK封装了向量存储、索引构建、检索的核心逻辑开发者只需几行代码即可完成基础功能开发大幅降低使用门槛。3.Milvus 向量数据库使用尝试的典型场景大模型应用的知识库问答RAG开发者尝试将 Milvus 作为 RAG 架构的向量存储将企业文档PDF、Word、Markdown转化为 Embedding 向量后存入 Milvus用户提问时生成向量并检索相似文档再将文档内容作为上下文输入大模型生成回答。通过尝试验证 Milvus 在检索速度、准确率上的表现优化 RAG 系统的响应效率与回答质量。计算机视觉的相似图片检索电商、安防领域的开发者尝试将商品图片、监控图片的特征向量存入 Milvus实现 “上传图片→检索相似图片” 的功能例如电商平台的 “拍立淘”安防系统的人脸相似性检索验证 Milvus 在百万级、千万级图片向量中的检索性能与精度。推荐系统的个性化推荐互联网企业尝试将用户行为特征向量、商品特征向量存入 Milvus通过向量相似性检索为用户推荐相似商品、内容例如短视频平台的视频推荐电商平台的商品推荐验证 Milvus 在高并发场景下的检索稳定性与扩展性。自然语言处理的文本相似性匹配开发者尝试将新闻、评论、文档的文本向量存入 Milvus实现文本查重、相似问答匹配、舆情监控等功能例如客服系统的相似问题匹配新闻平台的重复新闻检测验证 Milvus 在文本向量处理上的适配性。多模态数据检索开发者尝试将文本、图片、音频的多模态向量存入 Milvus实现跨模态的相似性检索例如输入文本 “红色手机”检索相似的图片与视频验证 Milvus 对多维度、多类型向量的处理能力。4.使用尝试的核心目标与意义开发者与企业开展 Milvus 使用尝试并非单纯的技术验证而是为了技术选型验证对比 Milvus 与其他向量数据库如 Pinecone、Weaviate、FAISS在性能、成本、易用性上的差异确定适配自身业务的向量存储方案性能基准测试针对业务场景的向量规模百万级 / 千万级测试 Milvus 在不同索引算法、硬件配置下的检索速度、准确率、资源消耗为生产环境部署提供参数依据业务适配性验证验证 Milvus 能否与现有 AI 应用、业务系统无缝集成解决实际业务中的向量检索痛点成本评估评估 Milvus 分布式部署的硬件成本、运维成本对比传统存储方式的投入产出比确定商业化落地的可行性。综上Milvus 向量数据库使用尝试的需求源于 AI 应用对高维向量数据高效处理的迫切诉求以及传统数据存储方式在向量场景的全面失效。这一尝试不仅是开发者探索新技术的过程更是企业将 AI 应用从 “演示级原型” 推向 “生产级落地” 的关键步骤 —— 通过验证 Milvus 的能力解决非结构化数据检索的性能瓶颈为 AI 应用的规模化部署提供核心数据存储支撑。二.具体实现1.安装包pip install pymilvus2.引入依赖import sys import os import random import numpy as np from pymilvus import ( connections, db, Collection, FieldSchema, CollectionSchema, DataType, utility ) # 解决Windows控制台中文乱码问题 if sys.platform win32: # 设置标准输出编码为UTF-8 if hasattr(sys.stdout, reconfigure): sys.stdout.reconfigure(encodingutf-8) if hasattr(sys.stderr, reconfigure): sys.stderr.reconfigure(encodingutf-8) # 设置环境变量 os.environ[PYTHONIOENCODING] utf-83.创建连接host xxx port 19530 database_name test_db_01 collection_name test_collection_01 # 连接到Milvus print(f正在连接到 Milvus {host}:{port}...) connections.connect( aliasdefault, hosthost, portport ) print(连接成功\n)4.列举所有数据库databases db.list_database()5.创建数据库db.create_database(database_name)6.创建Collectiondb.using_database(database_name) # 定义Collection Schema print(f正在创建Collection {collection_name}...) # 定义字段 fields [ FieldSchema(nameid, dtypeDataType.INT64, is_primaryTrue, auto_idFalse), FieldSchema(namevector, dtypeDataType.FLOAT_VECTOR, dim64), FieldSchema(namea, dtypeDataType.INT64), FieldSchema(nameb, dtypeDataType.FLOAT) ] # 创建Schema schema CollectionSchema( fieldsfields, description测试Collection包含64维向量和标量字段a、b ) # 检查Collection是否存在如果存在则删除 if utility.has_collection(collection_name): print(fCollection {collection_name} 已存在正在删除...) utility.drop_collection(collection_name) # 创建Collection collection Collection( namecollection_name, schemaschema )7.插入数据# 生成随机数据并插入 print(正在生成随机数据并插入...) data_id random.randint(1, 1000000) data_vector np.random.random((1, 64)).tolist()[0] # 64维随机向量 data_a random.randint(1, 100) data_b random.uniform(0.0, 100.0) data [ [data_id], [data_vector], [data_a], [data_b] ] print(f插入数据:) print(f id: {data_id}) print(f vector: {data_vector[:5]}... (显示前5维)) print(f a: {data_a}) print(f b: {data_b:.2f}) collection.insert(data) print(数据插入成功\n)8.创建索引print(正在为向量字段创建索引...) index_params { metric_type: L2, index_type: IVF_FLAT, params: {nlist: 128} } collection.create_index( field_namevector, index_paramsindex_params ) print(索引创建成功\n)9.检索数据# 加载Collection到内存 print(正在加载Collection到内存...) collection.load() print(加载成功\n) # 进行查询 print(正在查询数据...) # 使用向量搜索 search_vector [data_vector] # 使用插入的向量进行搜索 search_params { metric_type: L2, params: {nprobe: 10} } results collection.search( datasearch_vector, anns_fieldvector, paramsearch_params, limit10, output_fields[id, a, b] ) print(查询结果:) for hits in results: for hit in hits: print(f id: {hit.id}, 距离: {hit.distance:.4f}, a: {hit.entity.get(a)}, b: {hit.entity.get(b):.2f}) # 也可以使用表达式查询 print(\n使用表达式查询:) query_result collection.query( exprfid {data_id}, output_fields[id, a, b, vector] ) for result in query_result: print(f id: {result[id]}) print(f a: {result[a]}) print(f b: {result[b]:.2f}) print(f vector: {result[vector][:5]}... (显示前5维))