首页 > 其他分享 >基于 EventBridge + DashVector 打造 RAG 全链路动态语义检索能力

基于 EventBridge + DashVector 打造 RAG 全链路动态语义检索能力

时间:2024-11-05 17:59:48浏览次数:1  
标签:RAG DashVector EventBridge question dashscope embedding import 向量

作者:肯梦

本文将演示如何使用事件总线(EventBridge),向量检索服务(DashVector),函数计算(FunctionCompute)结合灵积模型服务 [ 1] 上的 Embedding API [ 2] ,来从 0 到 1 构建基于文本索引的构建+向量检索基础上的语义搜索能力。具体来说,我们将基于 OSS 文本文档动态插入数据,进行实时的文本语义搜索,查询最相似的相关内容。

本文中将用到事件总线(EventBridge),它是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用、SaaS 应用以标准化、中心化的方式接入,并能够以标准化的 CloudEvents 1.0 协议在这些应用之间路由事件,帮助您轻松构建松耦合、分布式的事件驱动架构。

RAG 背景概述

大语言模型(LLM)作为自然语言处理领域的核心技术,具有丰富的自然语言处理能力。但其训练语料库具有一定的局限性,一般由普适知识、常识性知识,如维基百科、新闻、小说,和各种领域的专业知识组成。导致 LLM 在处理特定领域的知识表示和应用时存在一定的局限性,特别对于垂直领域内,或者企业内部等私域专属知识。

实现专属领域的知识问答的关键,在于如何让 LLM 能够理解并获取存在于其训练知识范围外的特定领域知识。同时可以通过特定 Prompt 构造,提示 LLM 在回答特定领域问题的时候,理解意图并根据注入的领域知识来做出回答。在通常情况下,用户的提问是完整的句子,而不像搜索引擎只输入几个关键字。这种情况下,直接使用关键字与企业知识库进行匹配的效果往往不太理想,同时长句本身还涉及分词、权重等处理。相比之下,倘若我们把提问的文本,和知识库的内容,都先转化为高质量向量,再通过向量检索将匹配过程转化为语义搜索,那么提取相关知识点就会变得简单而高效。

本文将介绍如何构建一个完全动态的 RAG 入库方案,通过 EventBridge 拉取 OSS 非结构化数据,同时将数据投递至 DashVector 向量数据库,从而实现完整的 RAG Ingestion 流程。

流程概述

数据集成(Ingestion)

数据检索(Search)

操作流程

前提条件

  • DashScope 控制台开通灵积模型服务,并获得 API-KEY 的获取与配置。
  • 开通 DashVector 向量检索服务,并获得 API-KEY 的获取与配置。
  • 开通 OSS 服务。
  • 开通 FC 服务。
  • 开通 EventBridge 服务。

开通灵积模型服务

  1. 点击进入 DashScope 控制台 [ 3] ,开通灵积相关服务

  1. 点击进入“API-KEY”管理,获取相关 KEY 信息

开通 DashVector 服务

  1. 若第一次配置,请点击“新建 DashVector Cluster [ 4] ”,跳转创建新的 Cluster;点击“创建免费 Cluster”快速体验创建向量数据库

2. 选择“立即购买”

3. 点击创建“Collection”

4. 填写纬度为“1536”,距离度量方式“Cosine”,点击“确认”

5. 点击“API-KEY 管理”,获取 DashVector 的 API KEY

创建 Ingestion 数据集成任务

1.1 进入 EventBridge 控制台 [ 5]

1.2 配置 OSS 源

  • OSS Bucket:选择空白存储桶实验,若无请自行创建;
  • OSS 前缀:该项可根据诉求填写,若无前缀 EB 将拉取整个 Bucket 内容;本次演示不配置;
  • 文档加载:目前支持解析 TextLoder 作为文档加载器;
  • 加载模式:“单文档加载”单个文件作为一条数据加载,“分块加载”按照分隔符加载数据;本次演示使用单文档加载。

1.3 配置过滤

可根据诉求添加过滤规则,本次演示使用“匹配全部事件”。

1.4 配置转换

转换部分主要是将原始数据转成向量化数据,为投递至 DashVector 做数据准备。

函数代码如下,函数环境为 Python 3.10:

# -*- coding: utf-8 -*-
import os
import ast
import copy
import json
import logging
import dashscope
from dashscope import TextEmbedding
from http import HTTPStatus

logger = logging.getLogger()
logger.setLevel(level=logging.INFO)

dashscope.api_key='Your-API-KEY'

def handler(event, context):
  evt = json.loads(event)
  evtinput = evt['data']
  resp = dashscope.TextEmbedding.call(
        model=dashscope.TextEmbedding.Models.text_embedding_v1,
        api_key=os.getenv('DASHSCOPE_API_KEY'), 
        input= evtinput )
  if resp.status_code == HTTPStatus.OK:
        print(resp)
  else:
        print(resp)
  return resp

标签:RAG,DashVector,EventBridge,question,dashscope,embedding,import,向量
From: https://www.cnblogs.com/alisystemsoftware/p/18528457

相关文章

  • Windows Server 2025 Enhanced Storage 是微软在其未来版本的 Windows Server 操作系
    WindowsServer2025EnhancedStorage是微软在其未来版本的WindowsServer操作系统中引入的一项新技术或功能,旨在增强存储管理和优化存储性能。虽然在我的知识库中没有具体的“WindowsServer2025EnhancedStorage”这个专有术语的详细描述,但我可以根据类似技术的背景以及微......
  • 前端数据持久化指南:LocalStorage、SessionStorage 等的区别与应用
    一、引言在前端开发中,数据持久化是一个至关重要的需求。它能够确保用户在不同页面切换、刷新页面或者关闭浏览器后,数据仍然能够被保存和恢复。本文将详细介绍几种实现前端数据持久化的方法,并深入分析它们之间的区别。二、实现前端数据持久化的方法(一)LocalStorage介绍:LocalS......
  • ARB fragment INSTRUCTIONS
    CMPdest,src0,src1,src2Choosesrc1ifsrc0>=0.Otherwise,choosesrc2.Thecomparisonisdoneperchannel.dest=((src0>=0)?1.0:0.0)*(src1-src2)+src2LRPdest,src0,src1,src2Interpolateslinearlybetweenthesecondandthird......
  • averaged_perceptron_tagger_eng模块
    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注......
  • 【论文阅读】<ICSE2024>CoderEval: A Benchmark of Pragmatic Code Generation......
    CoderEval:ABenchmarkofPragmaticCodeGenerationwithGenerativePre-trainedModels标题:CoderEval:基于生成式预训练模型的实用代码生成基准摘要:基于预训练和微调范式的代码生成模型在学术界和工业界中得到了广泛应用,催生了许多知名的工业模型,如Codex、CodeGen和Pan......
  • TAG与RAG实现摘要和标签自动化转化客户反馈意见
    在数据驱动的今天,企业通过评论、调查和社交媒体互动获得大量客户反馈。虽然这些信息可以产生宝贵的洞察力,但也带来了巨大的挑战:如何从大量信息中提炼出有意义的数据。先进的分析技术正在彻底改变我们了解客户情感的方法。其中最具创新性的是表增强生成(TAG)和检索增强生成(RAG)技术,它......
  • localStorage、sessionStorage、cookie数据共享问题
    1、localStorage必须要符合同源策略(协议、域名、端口相同)才能共享同网址共享2、sessionStorage(1)只有同一个浏览器窗口才共享,不能在不同的标签页或窗口之间共享数据,即使它们属于同一个源。(2)如果通过window.open再次打开这个页面,那么数据会跟着复制过去,但是也不共享//在标签......
  • 如何理解RAG的尽头是Agent
    理解“RAG的尽头是Agent”这一观点,需要从检索增强生成(Retrieval-AugmentedGeneration,RAG)和智能代理(Agent)这两个概念的演进和融合来分析。什么是RAG?RAG是一种将大型语言模型(LLM)与外部知识库相结合的框架。在返回内容生成过程中,模型不仅依赖于训练数据,还能实时检索相关信......
  • Github上的十大RAG(信息检索增强生成)框架
    信息检索增强生成(Retrieval-AugmentedGeneration,简称RAG)是一种强大的技术,能够显著提升大型语言模型的性能。RAG框架巧妙地结合了基于检索的系统和生成模型的优势,可以生成更加准确、符合上下文、实时更新的响应。随着对先进人工智能解决方案需求的不断增长,GitHub上涌现出众......
  • 基于模型内部的检索增强型生成答案归属方法:MIRAGE
    人工智能咨询培训老师叶梓转载标明出处在自然语言处理(NLP)中,确保模型生成答案的可验证性是一个重要挑战。特别是在检索增强型生成(RAG)用于问答(QA)领域时,如何验证模型答案是否忠实于检索到的来源是一个关键问题。近期一种名为自引用提示的方法被提出,以使大型语言模型(LLMs)在生成答......