云上数据库一站式构建RAG系统最佳实践

随着AIGC技术日新月异的发展,LLM应用也在持续迭代,检索增强生成(RAG)系统已经成为企业知识库、智能客服、电商导购等场景的核心环节。阿里云OpenSearch-LLM智能问答版联合数据集成Data Integration产品,帮助企业和开发者实现分钟级构建专属RAG系统。本教程介绍如何通过云上数据库一站式构建RAG系统。

方案概览

  • OpenSearch-LLM智能问答版:OpenSearch-LLM智能问答版内置数据解析与处理、切片、向量化、文本&向量检索、多模态LLM等模型和功能,提供一站式开箱即用的RAG产品,快速构建包含问答、对话、文档链接、参考图片在内的多模态对话式搜索服务,帮助企业和开发者快速搭建专属RAG系统。

  • 数据集成 Data Integration:数据集成 Data Integration是阿里云对外提供的安全、低成本、稳定高效、弹性伸缩的数据同步平台,属于DataWorks的核心能力之一,致力于提供复杂网络环境下、丰富的异构数据源之间高速稳定的数据移动及同步能力。

如果您在数据集成 Data Integration支持的数据源(例如Elasticsearch)上曾经搭建过一个知识库,那么您可以通过Data Integration将数据同步到OpenSearch-LLM智能问答版,快速搭建起一个RAG系统。

通过云上数据库一站式构建RAG系统,只需3步:

  1. 创建实例:我们首先分别创建OpenSearch-LLM智能问答版实例、以及数据集成Data Integration实例。

  2. 配置数据同步任务:然后我们在数据集成控制台配置数据同步任务,将数据源数据同步到OpenSearch。

  3. 问答测试:最后我们登录OpenSearch-LLM智能问答版控制台对这个RAG系统进行问答效果测试。

说明

除使用Data Integration同步已有的数据源外,OpenSearch还支持通过控制台或API/SDK导入数据,实现全量数据导入与实时数据更新。具体请参考:企业知识库问答PushKnowledgeDocuments-文档推送

创建实例

  1. 创建OpenSearch-LLM智能问答版实例:进入OpenSearch LLM智能问答版售卖页,按需求购买实例。

    image

  2. 创建数据集成Data Integration实例:进入数据集成Data Integration售卖页,按需求购买实例,可选择独享资源通用资源

    image

    image

    重要

    请务必保证OpenSearch-LLM智能问答版实例和数据集成Data Integration实例在同一地域。

  3. 登录DataWorks控制台,创建DataWorks工作空间,并将已购买的资源组绑定至当前工作空间。

    单击创建工作空间按钮:

    image

    进行资源组配置

    image

配置数据同步任务

  1. DataWorks工作空间列表界面,选择操作栏下选择快速进入->数据集成进入数据集成控制台,在创建同步任务中选择来源和去向后单击开始创建

    • 来源选择当前数据存储的云上数据库(本文以Elasticsearch为例)。

    • 去向选择OpenSearch。

    image

  2. 设置新任务名称,同步类型选择单表离线,然后跳转到Datastudio进行配置。

    image

    新建节点,节点类型选择离线同步,按需选择节点路径并点击确认。

    image

  3. 选择数据源、数据集成资源组。

    按页面要求填写云上数据源,并完成连通性测试(如果未连通则按页面配置完成相应参数调整)。

    image

    image

  4. 单击下一步,完成数据去向配置。

    Elasticsearch数据源同步OpenSearch实例参考配置代码:

    {
        "transform": false,
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "elasticsearch",
                "parameter": {
                    "search": {
                        "match": {
                            "_type": "_doc"		//Elasticsearch中的数据查询条件
                        }
                    },
                    "datasource": "test",		//DataWorks中配置的数据源名称
                    "retryCount": 30,
                    "readTimeOut": "600000",
                    "scroll": "1m",
                    "column": [		//需要同步至OpenSearch中的原始字段,建议包含id、标题、内容等RAG系统常用字段
                        "id",
                        "title",
                        "content"
                    ],
                    "index": "product_info",		//Elastisearch中的表名
                    "pageSize": "100",
                    "type": "default",
                    "connTimeOut": "600000",
                    "retrySleepTime": "10000"
                },
                "name": "Reader",
                "category": "reader"
            },
            {
                "stepType": "opensearch",
                "parameter": {
                    "accessId": "",		//云账号accessId
                    "endpoint": "http://opensearch.cn-shanghai.aliyuncs.com",		//OpenSearch上海区域Endpoint
                    "accessKey": "",		//云账号accessKey
                    "indexName": "data_es",		//OpenSearch实例名称
                    "host": "http://opensearch-cn-shanghai.aliyuncs.com",		//OpenSearch上海区域host
                    "column": [		//同步至OpenSearch的目标字段,OpenSearch主表结构可参考控制台或产品文档
                        "id",
                        "title",
                        "content"
                    ],
                    "writeMode": "add",
                    "batchSize": "10",
                    "skipDirtyRecord": "true",
                    "ignoreWriteError": "false",
                    "table": "main"
                },
                "name": "Writer",
                "category": "writer"
            },
            {
                "copies": 1,
                "parameter": {
                    "nodes": [],
                    "edges": [],
                    "groups": [],
                    "version": "2.0"
                },
                "name": "Processor",
                "category": "processor"
            }
        ],
        "setting": {
            "errorLimit": {
                "record": "0"
            },
            "locale": "zh",
            "speed": {
                "throttle": false,
                "concurrent": 2
            }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }

    配置完成后,单击运行,即可开启离线数据同步任务。

    说明

    运行前请先删除代码注释。

问答测试

  1. 登录OpenSearch-LLM智能问答版控制台,单击操作栏下的管理按钮进入实例详情界面,在左侧导航栏选择配置中心->数据配置,可查看已导入的文档。

    image

  2. 在左侧导航栏选择问答测试,即可调整问答参数并测试问答效果。

    image

效果预览

OpenSearch-LLM智能问答版支持pdf、doc、html、ppt等丰富形式的非结构化数据,和excel、json等结构化数据,还能支持对于图片等多模态内容的理解,可方便快捷的构建智能问答、对话式搜索系统。

image

image

image

image

总结

至此,您已完成了云上数据源的数据同步以及RAG系统的搭建,后续只要将OpenSearch相应的接口接入到业务中,就可以支持企业知识库、智能文档、电商导购、教育问答等多种多样的场景。