百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Oracle SelectAI RAG - 数据库自动化RAG整个过程

mhr18 2025-03-05 18:01 22 浏览 0 评论

RAG的过程

实现一个RAG,自己需要写代码实现这样的两个阶段:

  1. 数据加载阶段:文件加载 -> 文件分片 -> 内容向量化 -> 存入向量库 -> 建立向量索引
  2. 检索阶段:用户问题 -> 向量化用户问题 -> 向量语议检索出相关内容 -> 问题增强(提示词) -> 提交给大语言模型 -> 返回结果。

Oracle 23ai RAG

RAG是一个面向数据的检索方法,因此,由数据层面的基础设施完成数据相关的工作是比较合理的。

Oracle 23ai 推出了 SelectAI RAG,用户不再需要写代码就可以实现整个RAG的过程,直接用SQL语句就可以返回RAG的结果:

详细配置步骤

主要包括以下这些步骤(前面六步是数据加载(Data Loading)的配置)。

  1. Data Loading Step1: Whitelist the provider for API access
BEGIN
   -- allow connecting to outside hosts
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'OUSER',
                           principal_type => xs_acl.ptype_db));
END;
/
  1. Data Loading Step2: Create Credential for Vector Embedding
declare
  jo json_object_t;
begin
  jo := json_object_t();
  jo.put('user_ocid','ocid1.user.oc1..aaaaaaaaxxxxxxx');
  jo.put('tenancy_ocid','ocid1.tenancy.oc1..aaaaaaaaxxxxxx');
  jo.put('compartment_ocid','ocid1.compartment.oc1..aaaaaaaapxxxxxxx');
  jo.put('private_key','private key content string');
  jo.put('fingerprint’,’xx:xx:xx:…');

  dbms_vector.create_credential(
    credential_name   => 'VECTOR_OCI_GENAI_CRED',
    params            => json(jo.to_string));
end;
/
  1. Data Loading Step3: Create Embedding Profile
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'OCI_TEXT_TRANSFORMER',
    attributes   => '{"provider": "oci",
                      "credential_name": "VECTOR_OCI_GENAI_CRED",
                      "embedding_model": "cohere.embed-multilingual-v3.0",
                      "oci_compartment_id": "ocid1.compartment.oc1..aaaaaaaa…",
                      "region": "us-chicago-1"
                      }');
END;
/
  1. Data Loading Step4: Create Credential for Object Storage and OCI LLM Service
begin
    DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name => 'OCI_GENAI_CRED',
      user_ocid => 'ocid1.user.oc1..aaaaaaaaxxxxxx',
      tenancy_ocid => 'ocid1.tenancy.oc1..aaaaaaaaxxxxxx',
      private_key => 'private key string',
      fingerprint => 'xx:xx:xx……' );
end;
/
  1. Data Loading Step5: Create Vector Index For Files in Object Storage
BEGIN
  DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
    index_name  => 'DEMO_VECTOR_INDEX',
    attributes  => '{"vector_db_provider": "oracle",
                     "location": "https://objectstorage.{region}.oraclecloud.com/n/{namespace}/b/{bucket}/o/{folder}",
                     "object_storage_credential_name": "OCI_GENAI_CRED",
                     "profile_name": "OCI_TEXT_TRANSFORMER",
                     "vector_dimension": 1024,
                     "vector_distance_metric": "cosine",
                     "chunk_overlap":128,
                     "chunk_size":1024,
                     "refresh_rate":120}');
END;
/
-- refresh_rate 这里设成了120分钟,表示每隔2小时数据库会自动检查对象存储中的内容变化及自动更新数据
  1. Data Loading Step6: Create SelectAI Profile
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'PROFILE_OCI_SELECTAI_RAG_LLAMA33_70B',
    attributes   => '{"provider": "oci",
                      "credential_name": "OCI_GENAI_CRED",
                      "vector_index_name": "DEMO_VECTOR_INDEX",
                      "temperature": 0,
                      "max_tokens": 4000,
                      "model": "meta.llama-3.3-70b-instruct",
                      "embedding_model": "cohere.embed-multilingual-v3.0",
                      "oci_compartment_id": "ocid1.compartment.oc1..aaaaaaaa…",
                      "region": "us-chicago-1",
                      "enable_sources": true }');
END;
/

完成前面六步数据加载的配置后,上传相关的一些文档到指定的对象存储目录,就可以通过SQL语句直接查询RAG结果了,比如:

“什么是 ADB Schema Advisor?” 这个问题,通过 SQL 可以直接查看:

EXEC DBMS_CLOUD_AI.SET_PROFILE('PROFILE_OCI_SELECTAI_RAG_LLAMA33_70B’);
                               
SELECT AI NARRATE '什么是 ADB Schema Advisor?’;

得到如下结果:

非常简单方便,数据库直接帮我们做了整个RAG的过程,应用程序就只要像执行传统的SQL一样获取结果就行了。

相关推荐

SQL入门知识篇(sql入门新手教程视频)

一、什么是数据库?什么是SQL?1、数据库:存放数据,可以很多人一起使用2、关系数据库:多张表+各表之间的关系3、一张表需要包含列、列名、行4、主键:一列(或一组列),其值能够唯一区分表中的每个行。5...

postgresql实现跨库查询-dblink的妙用

技术导语:用惯了oracle的dblink,转战postgresql,会一时摸不着头脑。本期就重点详细讲解postgresql如何安装dblink模块及如何使用dblink实现跨库查询。安装cont...

Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)

OracleVMVirtualBox是一款完全免费的虚拟机软件,下载银行有提供下载,软件支持安装windows、linux等多个操作系统,让用户可以在一台设备上实现多个操作系统的操作。同时软件有着...

开源 SPL 轻松应对 T+0(开源srs)

T+0问题T+0查询是指实时数据查询,数据查询统计时将涉及到最新产生的数据。在数据量不大时,T+0很容易完成,直接基于生产数据库查询就可以了。但是,当数据量积累到一定程度时,在生产库中进行大数据...

中小企业佳选正睿ZI1TS4-4536服务器评测

随着科技的不断发展,各行各业对于数据使用越加频繁,同时针对服务器的选择方面也就越来越多样化和细分化。那么对于我们用户来说,如何选择符合自身业务需求和最优性价比的产品呢?笔者将通过刚刚购买的这台服务器的...

MFC转QT:Qt基础知识(mfc和qt的区别)

1.Qt框架概述Qt的历史和版本Qt是一个跨平台的C++应用程序开发框架,由挪威公司Trolltech(现为QtCompany)于1991年创建。Qt的发展历程:1991年:Qt项目启动1995年...

数据库,QSqlTableModel(数据库有哪些)

QMYSQL——mysqlQSQLITE——sqliteQOICQ——orcale所需头文件.pro增加sql#include<QSqlDatabase>#include<Q...

python通过oledb连接dbf数据库(python连接jdbc)

起因:因为工作需要,需要读取dbf文件和系统数据中数据进行校对,因为知道dbf文件可以用sql查询,所以想能不能像mysql/oracle那样连接,再调用执行sql方法,通过一系列百度,尝试,最终通过...

Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)

在VBA(VisualBasicforApplications)中使用数据库(如Access、SQLServer、MySQL等)具有以下优点,适用于需要高效数据管理和复杂业务逻辑的场景:1....

Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)

以下是常见数据库软件的详细配置步骤,涵盖安装、驱动配置、服务启动及基本设置,确保VBA能够顺利连接:一、MicrosoftAccess适用场景:小型本地数据库,无需独立服务。配置步骤:安装Acces...

Windows Docker 安装(docker安装windows容器)

Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的L...

Windows下安装Ubuntu虚拟机方法(windows下安装ubuntu20)

在Windows下安装Ubuntu虚拟机。选择使OracleVMVirtualBox安装Ubuntu虚拟机。1.下载和安装OracleVMVirtualBox:访问OracleVMVir...

java入门教程1 - 安装和配置(win和linux)

windows安装和配置安装javahttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html目前大部分项目的...

Centos7 安装Tomcat8服务及配置jdk1.8教程

1、下载jdk1.8压缩包下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmltom...

全网最完整的免费java教程讲义(一)——java配置和安装

一,安装Java1)安装JDK要学习和使用java,首先需要安装JDK(JavaDevelopemntKit),相当于java安装包。Java的下载页在甲骨文官网上:https://www.or...

取消回复欢迎 发表评论: