规划部署

您可以使用 Oracle Cloud Infrastructure Generative AI 代理构建智能搜索系统,通过搜索企业知识库来提供与上下文相关的答案。

本节介绍了以下实现:

  • 将企业数据引入服务管理的知识库,供生成式 AI 代理摄取。
  • 在客户管理的知识库中为数据编制索引。
  • 构建和部署数据摄取代码并生成向量嵌入。

具有服务管理的知识库的生成式 AI 代理

以下部署使用 OCI Generative AI 代理构建智能搜索系统,该系统使用服务管理的知识库和 Oracle Cloud Infrastructure Object Storage

此部署将 TXT 和 PDF 文件上载到 Oracle Cloud Infrastructure Object Storage 存储桶,在此存储桶中,生成式 AI 代理会自动摄取数据以创建存储在集成向量存储中的向量。

此部署的优势在于,它非常适合需要托管解决方案来处理非结构化数据的客户,可以快速轻松地进行数据摄取,并且只需要极少的编码和维护需求。然而,Cohere 服务管理的嵌入模型只允许每个知识库最多 1000 个文本和 PDF 文件。



genai-knowledge-base-oracle.zip

使用以下概要步骤创建此部署:

  1. 预配对象存储桶并将文件上载到存储桶。

    支持的文件类型为 PDF 和 TXT,每个文件不得大于 100MB。PDF 文件可以包括图像、图表和参考表,但其中每个对象不得超过 8MB。OCI 对象存储支持使用控制台、Rest API 或软件开发工具包 (SDK) 批量上载文件。

  2. 创建知识库和摄取作业。

    OCI Generative AI 代理中创建知识库,并指定您预配的对象存储存储桶作为数据源。选择自动启动摄取作业选项,以便 OCI 生成式 AI 代理服务使用服务管理的嵌入模型生成向量索引。

  3. 创建代理和端点。

    OCI Generative AI 代理中创建代理并将其连接到上一步中预配的知识库。为座席创建端点,稍后该端点将用于启动与座席的交谈。端点用于启用代理与外部系统之间的通信和数据交换。如果要使用 AI 代理通过 API 或 SDK 启用聊天功能,则端点是必需的输入参数。

  4. (可选)创建前端集成。

    OCI Generative AI 代理服务提供聊天用户界面,允许用户询问与代理有权访问的数据相关的问题。您可以通过使用服务 Rest API 或 SDK 将代理与您的应用集成,然后自定义聊天机器人界面。Oracle 提供低代码无代码应用开发工具,例如 Oracle APEX Application DevelopmentOracle Digital Assistant

使用 OCI 的生成式 AI 代理 OpenSearch

以下部署使用带有 OpenSearch 数据的 Oracle Cloud Infrastructure Search 作为客户管理的知识库,供生成式 AI 代理使用。

Oracle Cloud Infrastructure Search with OpenSearch 是一项托管服务,可搜索和分析大型数据存储中的数据。在此部署中,OpenSearch 是向量数据库,用于存储企业文档、创建索引以及使用混合搜索来搜索和检索数据。然后, OCI Generative AI 代理对搜索结果进行排名,使用托管重新排名模型,然后发送到 Cohere 大语言模型 (LLM) 以生成上下文响应。

这种部署的优点是,它支持更广泛的文件类型,如 JSON,XML 和博客,与广泛的开源嵌入模型兼容,并且可以使用自动截断来获得更具体的搜索结果。此部署要求您构建和管理数据摄取和索引管道,并且要求每个文件分块至少于 512 个令牌,并在 OpenSearch 中摄取和索引。



genai-opensearch-oracle.zip

使用以下概要步骤创建此部署:

  1. 预配 Oracle Cloud Infrastructure 搜索堆栈并摄取数据。

    预配虚拟云网络 (VCN)、Oracle Cloud Infrastructure 搜索集群和虚拟机 (VM) 实例。

    有关如何创建堆栈的教程链接,请参阅“浏览更多”部分。

  2. 创建 OCI Vault 密钥。

    OCI Generative AI 代理要求您创建密钥,以便 Oracle Cloud Infrastructure Search 可以在 OCI Vault 中存储用户名和密码。

  3. 配置 OCI Generative AI 代理知识库和代理。

    通过选择 Oracle Cloud Infrastructure 搜索集群作为数据源并指定要使用的索引来创建知识库。使用此知识库创建 OCI Generative AI RAG 代理。

使用 Oracle Database 23ai 的 OCI Generative AI 代理

此部署使用 Oracle Autonomous Database 23ai 和 Vector Search 来管理结构化和非结构化数据。

当用户查询企业数据时,AI 向量搜索将运行相似性搜索以查找要传递给 OCI Generative AI 代理的最相关事实。然后,这些代理运行重新排名模型并使用 Cohere 大语言模型 (LLM) 生成上下文响应。

这种部署的优势在于它支持结构化和非结构化数据,包括媒体数据、图像和视频,并且它与第三方嵌入模型兼容,以提供有针对性的搜索结果。此部署要求您构建和部署用于数据摄取的代码、生成向量嵌入以及创建向量索引。



genai-vector-search-oracle.zip

使用以下概要步骤创建此部署:

  1. 创建 Oracle Database 23ai 实例:
    1. 从 OCI 服务控制台导航菜单中,单击 Oracle Database ,然后选择 Autonomous Data Warehouse
    2. 单击创建自治数据库
    3. 为数据库命名并选择 23ai 作为数据库版本。提供其他参数或接受默认值,然后单击创建 Autonomous Database
  2. 创建用于存储数据库身份证明的 Vault,然后创建密钥:
    1. 从 OCI 服务控制台导航菜单中,单击身份和安全,然后选择 Vault
    2. 单击创建 Vault
    3. 为 Vault 命名。提供其他参数或接受默认值,然后单击创建 Vault
    4. 在新创建的 Vault 中,单击创建密钥
    5. 命名密钥。提供其他参数或接受默认值,然后单击创建密钥
  3. 创建数据库工具连接:
    1. 从 OCI 服务控制台导航菜单中,单击开发人员服务,然后选择连接
    2. 单击创建连接
    3. 为连接命名,选择 Oracle Autonomous Database 作为数据库云服务,选择区间并指定用户名。提供其他参数或接受默认值,然后单击创建密码密钥
    4. 命名密码密钥,选择区间、 Vault 区间、加密密钥区间并指定密码。单击创建
    5. 选择 SSO wallet 作为 wallet 格式,然后单击创建 wallet 内容密钥,为 wallet 内容密钥命名,选择 Vault 和加密密钥区间,并确保选择了从 Autonomous Database 检索区域 wallet 。单击创建
    6. 在“创建连接”窗口中单击创建。新创建的连接列在关联数据库的“详细信息”页上的“连接”选项卡下。
  4. 使用 PL/SQL 嵌入模型构建向量:
    1. 设置身份证明以允许访问 OCI 资源,例如 OCI Gen AI 服务和 DBMS_CLOUD 的身份证明。您需要 OCI 配置文件,其中包含专用和公共 api_keys、指纹、用户、租户和区间 OCID。
      begin
        DBMS_CLOUD.CREATE_CREDENTIAL (
          credential_name => '<credential_name>',
          user_ocid       => '<user_ocid>',
          tenancy_ocid    => '<tenancy_ocid>',
          private_key     => '<private_key>',
          fingerprint     => '<fingerprint>'
        );
      end;
      /
    2. 将内置数据库功能与 23ai 存储的 pdf 文件结合使用,以分块文件并执行文本提取。
      CREATE TABLE ai_extracted_data AS
      SELECT
        j.chunk_id,
        j.chunk_offset,
        j.chunk_length,
        j.chunk_data
      FROM
        -- divide a blob into chunks (utl_to_chunks):
        (select * from dbms_vector_chain.utl_to_chunks(
                  dbms_vector_chain.utl_to_text(
                      to_blob(
                          DBMS_CLOUD.GET_OBJECT('OCI_CRED_BUCKET', '<path-to-object-pdf>')
                      )
                  ), json('{"max":"75", "normalize":"all", "overlap":"15"}')
              )),
        JSON_TABLE(column_value, '$'
          COLUMNS (
            chunk_id NUMBER PATH '$.chunk_id',
            chunk_offset NUMBER PATH '$.chunk_offset',
            chunk_length NUMBER PATH '$.chunk_length',
            chunk_data CLOB PATH '$.chunk_data'
          )
        ) j;
    3. 使用广泛的嵌入选项(例如通过 OCI Generative AI 的 cohere.embed-multilingual-v3.0 模型)创建向量嵌入。
      create table ai_extracted_data_vector as (
          select chunk_id as docid, to_char(chunk_data) as body, dbms_vector.utl_to_embedding(
                  chunk_data,
                  json('{
                      "provider": "OCIGenAI",
                      "credential_name": "<credential_name>",
                      "url": "https://example.com/<path>",
                      "model": "cohere.embed-multilingual-v3.0"
                  }')
              ) as text_vec
          from ai_extracted_data
          where chuck_id <= 400
      );
      
    4. 创建一个函数来查询向量表并在运行时执行 AI 搜索操作。
      create or replace FUNCTION retrieval_func_ai (
          p_query IN VARCHAR2,
          top_k IN NUMBER
      ) RETURN SYS_REFCURSOR IS
          v_results SYS_REFCURSOR;
          query_vec VECTOR;
      BEGIN
          query_vec := dbms_vector.utl_to_embedding(
              p_query,
              json('{
                  "provider": "OCIGenAI",
                  "credential_name": "<credential_name>",
                  "url": "https://example.com/<path>",
                  "model": "cohere.embed-multilingual-v3.0"
              }')
          );
       
          OPEN v_results FOR
              SELECT DOCID, BODY, VECTOR_DISTANCE(text_vec, query_vec) as SCORE
              FROM ai_extracted_data_vector
              ORDER BY SCORE
              FETCH FIRST top_k ROWS ONLY;
       
          RETURN v_results;
      END;
  5. 使用 Oracle Database 23ai 创建知识库:
    1. 从 OCI 服务控制台导航菜单中,单击分析和 AI ,然后选择生成式 AI 代理
    2. 单击知识库,然后单击创建知识库
    3. 命名知识库,选择 Oracle AI Vector Search 作为数据存储类型,并且您提供数据库工具连接和搜索功能,然后单击创建知识库
  6. 使用 Oracle Database 23 AI 知识库创建生成式 AI 代理:
    1. 从 OCI 服务控制台导航菜单中,单击分析和 AI ,然后选择代理
    2. 单击创建代理
    3. 为代理命名,选择您创建的知识库,然后单击创建代理

    创建座席后,您应看到座席处于活动状态并准备好进行聊天。