向量检索服务体验评测

简介: 通过一个实用的例子带你全方位了解向量检索服务DashVector

概述

在理解向量检索之前需要先了解一个概念,什么是向量。向量(Vector),Embedding Vector,在DashVector中,Vector作为Doc(文档)的基础数据单位之一,用于描述各种非结构化数据的特征。说通俗点,向量实际上是一串数字的组合,也就是一个数组,这个数组代表了这段文本的特征。

向量检索服务DashVector是一种支持向量检索的服务。它支持Dense Vector(密集向量)和Sparse Vector(稀疏向量),前者用于模型的高维特征表达,后者用于关键词和词频信息表达。DashVector可以进行关键词感知的向量检索,即Dense Vector和Sparse Vector结合的混合检索。

随着大数据、人工智能和云计算等技术的普及,人们处理和利用大量数据的能力得到了显著提高。这为向量检索服务的出现提供了必要的技术基础。而随着深度学习和自然语言处理技术的突飞猛进,向量检索服务得到了广泛应用。这些技术使得将文本或数据转换成向量表示成为可能,进而进行相似性匹配。

总之,向量检索服务的出现是技术发展、数据处理需求以及提高搜索效率和精度的需求等多种因素共同作用的结果。

试用

本次活动提供了一个月的serverless型产品的试用,前往活动首页可以直接开通,如下:

image.png

整个开通过程还是非常简单的,直接命名一个Cluster名称即可,其他保持默认。如下:

image.png

点击立即试用后直接跳转到向量检索服务的控制台首页,如下:

image.png

在首页可以很直观地看到,已经有一个Cluster正在运行。点击可以来到Cluster首页。如下:

image.png

到此,我们已经完成了产品的开通试用,接下来就通过一个实用的例子来体验。

实践

语义搜索

该实验将基于QQ 浏览器搜索标题语料库(QBQTC:QQ Browser Query Title Corpus)进行实时的文本语义搜索,查询最相似的相关标题。这里要借助到DashScope灵积模型服务,那怎么理解DashScope灵积模型呢,说白点就是通过DashScope统一的API和SDK来实现被不同业务系统集成,从而为各领域模型提供开箱即用的能力。
在正式开始体验之前,非常有必要先了解下向量检索服务的使用流程,如下:
image.png

那该实验的第一步就需要开通DashScope灵积模型服务,前往服务控制台,点击去开通,如下:

image.png

完成后,将会看到如下界面,如下是我之前开通了通义千问的模型服务。如下:

image.png

点击左侧的API-KEY管理,点击创建新的API-KEY,如下:

image.png

在接下来弹出的API-KEY窗口中复制好新的KEY,如下:

image.png

接着来到向量检索服务控制台,点击左侧导航栏的API-KEY管理,点击创建新的API-KEY,如下:

image.png

复制好接下来弹窗中的KEY,如下:

image.png

有了上面的API-KEY后,接下来需要在你的电脑上安装python环境,这里我就不再赘述了,提供一个比较好的文档链接供参考。最详细的Windows安装Python教程

完成后,可以运行cmd,打开命令行窗口,运行python、pip,验证环境是否可用。如下:

image.png

接下来安装初始环境,运行如下命令,如下:

pip3 install dashvector dashscope

image.png

大概运行一分钟左右,直到出现Successfully installed字样,就表明环境安装完成。如下:

image.png

推荐Python3.7 及以上版本。这里如果大家不注意python版本的话,安装过程中会出现报错,提示版本过低,需要执行如下命令进行在线升级python版本,命令如下:

python.exe -m pip install --upgrade pip

有了初始环境,接着要准备数据,这里需要电脑安装git工具,可以自行前往git官网,选择电脑操作系统对应版本进行安装。这里提供一个非常实用的文档参考,点击前往Git 安装和配置教程:Windows - Mac - Linux 三平台详细图文教程,带你一次性搞 Git 环境

完成后,在cmd窗口通过git -v可以查看,如下:

image.png

通过如下命令获取数据。如下:

git clone https://github.com/CLUEbenchmark/QBQTC.git

image.png

由于数据源来自与github,如果网络不稳定的话,需要多试几次。接下来通过git bash窗口,运行如下命令:

wc -l QBQTC/dataset/train.json

image.png

图上显示数据集train.json文件有180000行数据。当然这里也可以通过cat命令,获取到train.json文本中的内容。如下:

image.png

从train.json文本内容中可以很直观地看到,数据集中的训练集(train.json)其格式为 json:

{
   
   
    "id":179975,
    "query":"2022年羊年运势及运程",
    "title":"属羊2022年运势及运程2022年属羊人的全年每月运势详解2022年生肖运势祥安阁风水网",
    "label":"2"
}

接下来将从这个数据集中提取title,方便后续进行embedding并构建检索服务。python代码如下:

import json

def prepare_data(path, size):
    with open(path, 'r', encoding='utf-8') as f:
        batch_docs = []
        for line in f:
            batch_docs.append(json.loads(line.strip()))
            if len(batch_docs) == size:
                yield batch_docs[:]
                batch_docs.clear()

        if batch_docs:
            yield batch_docs

将上述代码另存为title.py文件并拖入cmd窗口,并执行。

接下来通过调用灵积模型服务的API-KEY来获取通用文本向量,也就是embedding向量。python代码如下:

import dashscope
from dashscope import TextEmbedding

#这里填入上述获取到的灵积模型服务API-KEY
dashscope.api_key='sk-b1eccf0ce17c**********0efcddb9f'


def generate_embeddings(text):
    rsp = TextEmbedding.call(model=TextEmbedding.Models.text_embedding_v1,
                             input=text)

    embeddings = [record['embedding'] for record in rsp.output['embeddings']]
    return embeddings if isinstance(text, list) else embeddings[0]


# 查看下embedding向量的维数,后面使用 DashVector 检索服务时会用到,目前是1536
print(len(generate_embeddings('hello')))

运行上述代码,获取结果如下:

image.png

接下来将如下python代码实现向量检索服务构建检索,实现向量的入库。也就是把QBQTC训练数据集里的title内容都写到DashVector服务上的集合里。代码如下:

from dashvector import Client, Doc

# 初始化 DashVector client
client = Client(
    #这里填入向量检索服务的API-KEY
  api_key='sk-D4Jb711x358syu***********Y8T321F7B36C9A311EEB9ADDE715BEC7D21',
    #这里填入向量检索服务Cluster的endpoint
  endpoint='vrs-cn-o493lxh*******.dashvector.cn-hangzhou.aliyuncs.com'
)

# 指定集合名称和向量维度
rsp = client.create('sample', 1536)

collection = client.get('sample')
assert collection

batch_size = 10
for docs in list(prepare_data('QBQTC/dataset/train.json', batch_size)):
    # 批量 embedding
    embeddings = generate_embeddings([doc['title'] for doc in docs])

    # 批量写入数据
    rsp = collection.insert(
        [
            Doc(id=str(doc['id']), vector=embedding, fields={
   
   "title": doc['title']}) 
            for doc, embedding in zip(docs, embeddings)
        ]
    )
    assert rsp

向量入库的这段代码运行需要耗费两小时,可以在向量检索服务控制台查看入库的向量数量,如下:

image.png

此时还可以通过查看Cluster详情获取到向量的用量统计,向量有关的信息。如下:

image.png

还可以对向量数据进行更删改查等操作,如下:

image.png

有了上述的集合结果后,可以通过如下命令实现语义检索了。代码及结果如下:

# 基于向量检索的语义搜索
rsp = collection.query(generate_embeddings('应届生 招聘'), output_fields=['title'])

for doc in rsp.output:
    print(f"id: {doc.id}, title: {doc.fields['title']}, score: {doc.score}")

image.png

到这里我们就完整体验了使用向量检索服务,基于QQ浏览器搜索标题语料库实现实时的文本语义搜索,查询最相似的相关标题。当然,如果你对于此次的实践意犹未尽,还想继续深入了解并学习,官网很贴心的准备了其他两个小实践,链接如下:

使用DashVector与LLM大模型实现垂直领域专属知识问答服务

使用DashVector和ModelScope实现多模态检索

DashVector + DashScope升级多模态检索

对比

作为开发者,我之前使用过如Faiss、Milvus和Annoy。感兴趣的同学可以前往如下链接了解学习。

FAISS向量数据库

向量搜索数据库milvus的详细讲解

向量数据库Annoy和Milvus_annoy向量库优缺点

这些工具在向量检索领域都有广泛的应用,并且具有各自的特点和优势。例如,Faiss是Facebook开源的向量检索工具,它支持高效的相似度搜索和聚类,适用于大规模数据集。Milvus则是一个开源的向量数据库,提供了高性能的向量检索和数据分析功能。Annoy则是一个轻量级的向量检索工具,易于使用和部署,适用于小型数据集。

在使用过程中,我发现这些工具都具有不错的性能和稳定性,能够满足大多数向量检索任务的需求。然而,它们也存在一些不足之处,如Faiss在处理超大规模数据集时可能会遇到性能瓶颈,Milvus的部署和配置相对复杂,而Annoy的功能相对简单,可能无法满足一些高级需求。

而阿里向量检索服务DashVector的优势在于

  • 易用性更好:向量检索服务通常提供多种接入方式以适应不同用户的需求并支持多种编程语言,如Python、Java、Go等。例如,为用户提供了API接口、SDK以及阿里云控制台的简单配置等多种接入方式,使得接入变得非常方便。对于有一定技术背景的用户,可以通过API和SDK快速集成向量检索功能;对于不具备技术背景的用户,可以通过阿里云控制台提供的直观界面,完成接入。因此,从接入便捷性来看,向量检索服务通常是满足预期的。

  • 检索性能更佳:向量检索服务通常表现出色。无论是对于大规模数据集还是实时数据流,该服务都能快速准确地返回检索结果。此外,其还提供了多种相似度计算方法,以满足不同场景的需求。这些特点使得向量检索服务在检索性能方面能够满足大多数用户的预期。

  • 扩展性能更强:向量检索服务除了提供基础的向量检索功能外,还提供了诸如数据预处理、索引管理以及自定义相似度计算等高级功能。这些功能大大增强了服务的灵活性和实用性,使得向量检索服务能够更好地满足用户的多样化需求。

因此,对于需要处理大规模数据集的用户,可以考虑使用Faiss、Milvus或DashVector等高性能的工具;对于需要快速部署和使用的用户,可以考虑使用Annoy等轻量级的工具。此外,如果对于近似最近邻搜索的速度轻量级集成更为关注,可以选择 Annoy;如果需要管理和查询大规模的向量数据库,并希望具备更多的功能和可扩展性,可以选择 Milvus或DashVector。

总结

一、在体验向量检索服务的过程中,通常会得到一定的产品内容引导和文档帮助。这些引导和帮助可能包括产品的介绍、功能说明、使用教程、API文档等,有助于用户了解和使用向量检索服务。但仍可能欠缺一些高级功能和使用场景的详细说明、错误排查和解决问题的指南以及最佳实践和性能优化建议等方面的内容。比如:

  • 高级功能和使用场景的详细说明:对于一些高级功能和使用场景,可能只是简单地提及或者没有详细说明,导致用户无法充分理解和使用这些功能。因此,需要提供更详细的高级功能和使用场景文档,包括具体的使用方法、参数说明、示例代码等。
  • 错误排查和解决问题的指南:在使用向量检索服务的过程中,用户可能会遇到各种问题或错误。因此,需要提供相应的错误排查和解决问题的指南,帮助用户快速定位和解决问题。这些指南可以包括常见问题的解答、错误码的含义和解决方案等。
  • 最佳实践和性能优化建议:对于向量检索服务的使用,可能存在一些最佳实践和性能优化建议。这些建议可以帮助用户更好地使用向量检索服务,提高检索效率和准确性。因此,需要提供相应的最佳实践和性能优化文档,供用户参考和学习。

二、从接入便捷性、检索性能以及其他功能等方面来看,向量检索服务在很大程度上是满足预期的。但仍然需要根据具体业务场景和需求进行持续优化和改进。例如,可以增加更多向量索引算法以满足不同业务场景的需求;提供更丰富的统计和监控功能以便于开发者更好地了解检索效果;优化分布式检索性能以提高在大规模数据场景下的检索速度等。

三、针对业务场景,向量检索产品还有很多可以改进和增加的功能点,比如:

  • 定制化的解决方案:对于特定的行业或应用场景,提供定制化的解决方案和功能支持。例如,对于电商、金融、医疗等不同行业,可以根据其数据特点和业务需求,提供专门的向量检索优化方案。
  • 多模态向量检索:随着多媒体内容的增加,支持图像、视频、文本等多模态数据的向量检索将变得越来越重要。可以进一步研发和优化这方面的技术,提供更高效、准确的多模态向量检索功能。
  • 向量索引和压缩技术:对于海量的向量数据,索引和压缩技术是提高检索效率和降低存储成本的关键。可以研究和引入更先进的向量索引和压缩算法,以优化存储和检索性能。
  • 可视化和解释性:提供可视化的检索结果和解释性信息,帮助用户更好地理解检索结果和向量之间的关系。例如,可以显示与查询向量最相似的几个向量的图像或文本描述,以及它们之间的相似度分数。

四、非常期待向量检索服务能与其他产品联动,推出组合产品。比如:

  • 向量检索服务与机器学习平台结合,可以实现更加智能的数据分析和预测。具体来说,机器学习平台可以对向量检索服务检索出的数据进行深入分析和挖掘,发现数据中的潜在规律和趋势,从而为用户提供更加精准和个性化的推荐或决策支持。
  • 向量检索服务与物联网平台结合,可以为物联网设备提供实时监测和智能控制功能。物联网平台可以收集各种传感器的数据,并通过向量检索服务对这些数据进行实时分析和处理。这样,用户就可以随时了解设备的状态和运行情况,并根据需要进行远程控制和调整。
  • 向量检索服务与自然语言处理、图像识别等其他AI产品联动,以满足更复杂的业务场景和需求。例如,在自然语言处理场景中,向量检索服务可以用于文本相似度匹配和语义搜索等任务;在图像识别场景中,向量检索服务可以用于图像检索和相似图像推荐等任务。
相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
2月前
|
开发者
《开发者评测》之向量检索服务评测获奖名单
向量检索服务评测最优奖、潜力奖、争优奖获奖名单正式公布!
|
3月前
|
人工智能 API 数据处理
阿里云向量检索服务评测报告
本评测报告对阿里云向量检索服务进行了全面而深入的分析,包括最佳实践探索、产品体验评测以及与其他向量检索工具的对比。评测结果显示,阿里云向量检索服务在语义检索、知识库搭建、AI多模态搜索等场景中表现出色,具有高效、易用、可扩展等优点。同时,该服务还提供了丰富的功能和优化选项,满足了复杂业务需求。然而,也存在一些可以改进的地方,如优化大规模数据处理性能、提供更多自定义配置选项等。总体而言,阿里云向量检索服务是一款值得推荐的向量检索解决方案。
|
3月前
|
人工智能 监控 搜索推荐
阿里云向量检索服务评测报告
本评测报告旨在对阿里云向量检索服务进行全面评估,包括最佳实践探索、产品体验评测以及与其他向量检索工具的对比。评测结果显示,阿里云向量检索服务在性能、易用性、可扩展性和便捷性等方面表现出色,能够满足不同业务场景的需求。同时,针对该产品的改进建议和期望联动方案也提出了具体建议,以期为用户提供更有价值的参考信息。
|
3月前
|
存储 人工智能 大数据
阿里云向量检索服务评测报告
随着人工智能和大数据技术的飞速发展,向量检索技术在语义检索、知识库搭建、AI多模态搜索等领域的应用越来越广泛。阿里云推出的向量检索服务基于自研的Proxima内核,旨在为用户提供高效、全托管的向量检索解决方案。本报告将从最佳实践、产品体验和对比测评三个方面对阿里云向量检索服务进行全面评测。
|
3月前
|
人工智能 Cloud Native API
向量检索服务评测
向量检索服务基于阿里云自研的向量引擎 Proxima 内核,提供具备水平拓展、全托管、云原生的高效向量检索服务。向量检索服务将强大的向量管理、查询等能力,通过简洁易用的 SDK/API 接口透出,方便在大模型知识库搭建、多模态 AI 搜索等多种应用场景上集成。
347 1
|
3月前
|
数据采集 机器学习/深度学习 搜索推荐
阿里云向量检索服务体验评测
阿里云向量检索服务是一款功能强大、易于接入的云服务产品。它为用户提供了快速、准确的向量检索功能,适用于多种业务场景,如推荐系统、搜索和图像识别等。产品具有完善的使用文档和丰富的开发者支持,方便用户快速上手。与其他阿里云产品联动,可以为用户提供更加全面和高效的一站式解决方案。尽管有改进空间,但阿里云向量检索服务已表现出出色的性能和应用价值。
669 1
|
3月前
|
机器学习/深度学习 人工智能 API
阿里云向量检索服务体验评测
阿里云作为国内领先的云计算服务提供商,不断推出各种创新的产品来满足用户的需求。近期,阿里云推出的向量检索服务引起了广泛关注。我作为一个长期关注云计算和人工智能领域的用户,也决定亲自体验一下这款产品,并在此分享我的评测感受。
689 1
|
3月前
|
人工智能 Cloud Native 数据可视化
向量检索服务评测
向量检索服务评测
286 0
|
3月前
|
人工智能 大数据 API
阿里云向量检索服务测评
在当今的大数据时代,向量检索技术已成为处理海量数据、实现高效信息检索的重要手段。阿里云作为国内领先的云计算服务提供商,推出了自己的向量检索服务。本文将对阿里云的向量检索服务进行深入的测评,探讨其在语义检索、知识库搭建、AI多模态搜索等场景的最佳实践,并分析其与其他向量检索工具的优劣。
647 1
|
3月前
|
机器学习/深度学习 自然语言处理 搜索推荐
阿里云向量检索服务:重塑大数据检索的未来
阿里云向量检索服务是一款强大且易于使用的云服务产品,专为大数据检索而设计。通过深度学习模型和高效的索引结构,该服务提供了快速、准确的检索能力,适用于多种业务场景。在评测中,我们对其功能、性能和业务场景适配性进行了全面评估,认为其具有出色的性能和良好的业务场景适配性。未来,阿里云向量检索服务有望持续发展和创新,拓展更多应用领域,为用户带来更加卓越的体验。
1483 5