企业网站栏目设计网站开发实用吗
- 作者: 五速梦信息网
- 时间: 2026年03月21日 09:57
当前位置: 首页 > news >正文
企业网站栏目设计,网站开发实用吗,dw网页设计作业成品源代码,wordpress 程序员博客主题上篇博客 Milvus python库 pymilvus 常用操作详解之Collection#xff08;上#xff09; 主要介绍了 pymilvus 库中Collection集合的相关概念以及创建过程的代码实现#xff0c;现在我们要在该基础上实现对于collection中插入数据的混合检索#xff08;基于dense vector 和…上篇博客 Milvus python库 pymilvus 常用操作详解之Collection上 主要介绍了 pymilvus 库中Collection集合的相关概念以及创建过程的代码实现现在我们要在该基础上实现对于collection中插入数据的混合检索基于dense vector 和 sparse vector。 首先回顾一下我们创建的名为 hybrid_demo 的集合的基本信息 print(col)
可以看到集合的基本信息该集合包含四个字段主键id检索文字内容text稠密向量 dense_vector 和 稀疏向量 sparse_vector
Collection:
name: hybrid_demo description: schema: {auto_id: True, description: , fields: [{name: pk, description: , type: DataType.VARCHAR: 21, params: {max_length: 100}, is_primary: True, auto_id: True}, {name: text, description: , type: DataType.VARCHAR: 21, params: {max_length: 512}}, {name: sparse_vector, description: , type: DataType.SPARSE_FLOAT_VECTOR: 104}, {name: dense_vector, description: , type: DataType.FLOAT_VECTOR: 101, params: {dim: 1024}}], enable_dynamic_field: False}因为我们想实现的检索功能是基于两个向量表达的混合检索所以需要将名为 dense_vector 和 sparse_vector 的字段设置为针对于向量数据的 Index 索引即 Milvus中有一个重要概念向量索引。 向量索引 基于 Milvus 提供的官方文档内容向量索引包含三大类索引分别是内存索引、磁盘索引和GPU索引。在本篇博客中我们主要聚焦在内存索引的相关概念和具体实现上。 Milvus 目前只支持一个向量场一种索引类型当切换索引类型时旧索引会被自动删除。 ANNS 向量索引 Milvus 支持的大多数向量索引类型都使用近似近邻检索ANNS算法。 何为近似近邻检索ANNS算法(ChatGPT-4o回答 Milvus 内存索引 原文内容) 近似近邻检索Approximate Nearest Neighbor Search, ANNS是一种用于快速寻找大规模数据集中近似最近邻的算法。传统的最近邻搜索在高维数据中计算量很大因此ANNS方法通过引入近似来提高效率允许在较短时间内找到与查询点距离最接近的点虽然结果可能不是最优的但通常足够接近并且计算速度快。 与通常非常耗时的精确检索相比ANNS 的核心理念不再局限于返回最精确的结果而是只搜索目标的近邻。ANNS 通过在可接受的范围内牺牲精确度来提高检索效率。 根据实现方法ANNS 向量索引可分为四种类型基于树、基于图、基于哈希和基于量化。 ANNS 向量索引类型实际例子描述基于树KD-Tree使用树状结构递归划分空间适用于低维数据集的快速检索。基于图HNSWHierarchical Navigable Small World构建多层次小世界图用于大规模高维数据集的高效搜索。基于哈希LSHLocality-Sensitive Hashing通过哈希函数将相似数据点映射到相同桶中适合高维空间的快速匹配。基于量化PQProduct Quantization将高维向量分解并量化以减少存储和计算成本适用于大型数据库的图像检索。 Milvus 支持的索引 Milvus 支持多种索引类型这些类型按其处理的向量嵌入类型分为浮点嵌入也称浮点向量或密集/稠密向量、二进制嵌入也称二进制向量和稀疏嵌入也称稀疏向量。 本篇文章中主要介绍基于稠密向量和稀疏向量的索引类型二进制向量暂不介绍。 一、稠密向量的索引 既然我们需要通过ANNS近似近邻检索的方式去找到与某个向量表示最相关的若干个向量那我们就得有度量向量之间距离的计算方式。而用于dense vector稠密向量的距离度量是欧氏距离L2 、内积IP 和 余弦相似度 (COSINE)。 字段类型维度范围支持的度量类型默认度量类型FLOAT_VECTOR2-32,768COSINE, L2, IPCOSINEFLOAT16_VECTOR2-32,768COSINE, L2, IPCOSINEBFLOAT16_VECTOR2-32,768COSINE, L2, IPCOSINE Milvus 支持的索引类型包括FLAT,IVF_FLAT,IVF_PQ,IVF_SQ8,HNSW 和SCANN 用于基于 CPU 的 ANN 搜索。若想了解每个索引类型的特点和适用场景请参考官方文档 在后续的代码实现中我们将采用唯一能保证精确搜索结果的索引类型即FLAT并搭配内积IP度量类型实现混合检索。 对于要求完美准确性并依赖相对较小百万量级数据集的向量相似性搜索应用FLAT 索引是一个不错的选择。 FLAT 不压缩向量是唯一能保证精确搜索结果的索引。 FLAT 的结果还可以作为其他召回率低于 100% 的索引所产生结果的比较点。 FLAT 的精确度很高因为它采用的是穷举搜索方法这意味着每次查询都要将目标输入与数据集中的每一组向量进行比较,这使得 FLAT 成为列表中速度最慢的索引而且不适合查询海量向量数据。 在 Milvus 中FLAT 索引不需要任何参数使用它也不需要数据训练。 二、稀疏向量的索引 不同于稠密向量支持三种距离度量稀疏向量支持的距离度量只有IP 。 稀疏向量的索引类型包括SPARSE_INVERTED_INDEX 和SPARSE_WAND 支持的索引分类方案稀疏反转索引倒置索引• 取决于相对较小的数据集• 要求100%的召回率稀疏反向索引反向索引• 弱AND算法加速• 在牺牲少量召回率的同时速度也有明显提高 混合索引代码实现 一、为两个向量字段创建index sparse_index {index_type: SPARSE_INVERTED_INDEX, metric_type: IP}
为名为sparse_vector的稀疏向量字段创建SPARSE_INVERTED_INDEX类型向量度量方式为IP的索引
col.create_index(sparse_vector, sparse_index) dense_index {index_type: FLAT, metric_type: IP}
为名为dense_vector的稠密向量字段创建FLAT类型向量度量方式为IP的索引
col.create_index(dense_vector, dense_index)
集合调用load()函数索引文件和所有字段的原始数据都将加载到内存中以便快速响应搜索和查询
加载集合后插入的实体会自动进行索引并加载
col.load()二、创建ANNS请求 def get_query_embeddings(query):query_embeddings_raw model.encode([query], return_denseTrue, return_sparseTrue, return_colbert_vecsFalse)query_embeddings {}query_embeddings[dense] query_embeddings_raw[dense_vecs]query_embeddings[sparse] [dict(query_embeddings_raw[lexical_weights][0])]return query_embeddingsquery 请问股票代码为CSCO的美股今日走势如何 query_embeddings get_query_embeddings(query)
设置与query向量最相近的向量数量为2即top 2
k 2
为两个创建了索引的向量字段创建基于ANNS的请求
sparse_search_params {metric_type: IP} sparse_req AnnSearchRequest(query_embeddings[sparse],sparse_vector, sparse_search_params, limitk) dense_search_params {metric_type: IP} dense_req AnnSearchRequest(query_embeddings[dense],dense_vector, dense_search_params, limitk)三、进行混合检索 res col.hybrid_search([sparse_req, dense_req], rerankRRFRanker(),limitk, output_fields[text])代码解释ChatGPT-4o回答 这行代码是一个混合搜索hybrid search操作结合稀疏和稠密两类请求来进行查询并使用 RRFRanker 进行重新排序。具体解释如下 col.hybrid_search: 对一个集合进行混合搜索。[sparse_req, dense_req]: 传入两个搜索请求一个是稀疏sparse一个是稠密dense即分别基于不同类型的特征进行查询。rerankRRFRanker(): 使用 RRFRanker 算法进行结果的重新排序平衡稀疏和稠密请求的结果。limitk: 限定返回的结果数量为 k 条。output_fields[text]: 返回结果中的 text 字段。 RRFRankerReciprocal Rank Fusion是一种排名融合算法通常用于综合多个排序结果。它通过给每个结果的排名分配一个“倒数权重”即排名靠前的结果权重大排名靠后的权重小。RRF的优势在于不依赖于单一排名结果能够将多个基础排名的优势有效结合起来从而生成一个更为均衡和多样化的最终排名。 四、查看TOP K混合检索结果 for each_res in res:print(each_res)
与query最相近的两条检索结果res列表中的元素是 pymilvus.client.abstract.Hit 数据类型有 id, distance, entity等属性id: 454256988014510347, distance: 0.032786883413791656, entity: {text: 根据股票编号查询股票信息包括涨跌额、股票名称、开盘价、收盘价、当前价格、最高最低价、竞买价等信息支持沪深、香港、美国三个市场的股票数据查询覆盖全球各地的股票信息。}
id: 454256988014510348, distance: 0.032258063554763794, entity: {text: 提供最新的新闻头条信息包括国内、国际、体育、娱乐、科技等各类资讯让用户获取及时的新闻报道支持按照不同的新闻分类进行查询用户可以选择感兴趣的领域如体育、科技、娱乐等获取相关的新闻内容。}
- 上一篇: 企业网站宽度wordpress转换为中文版
- 下一篇: 企业网站流程图frontpage建设网站的图片
相关文章
-
企业网站宽度wordpress转换为中文版
企业网站宽度wordpress转换为中文版
- 技术栈
- 2026年03月21日
-
企业网站空间买虚拟主机怎么建立自己企业网站
企业网站空间买虚拟主机怎么建立自己企业网站
- 技术栈
- 2026年03月21日
-
企业网站开发知名品牌有哪些可以设计制作网页的软件
企业网站开发知名品牌有哪些可以设计制作网页的软件
- 技术栈
- 2026年03月21日
-
企业网站流程图frontpage建设网站的图片
企业网站流程图frontpage建设网站的图片
- 技术栈
- 2026年03月21日
-
企业网站流程图网站自定义模块
企业网站流程图网站自定义模块
- 技术栈
- 2026年03月21日
-
企业网站模板 首页大图淘特网官方网站下载
企业网站模板 首页大图淘特网官方网站下载
- 技术栈
- 2026年03月21日






