最佳实践-基于RAG的官方文档助手

简介

本文基于阿里云百炼官方文档,构建知识库检索应用,帮助用户更好地熟悉阿里云百炼平台,以及针对阿里云百炼平台使用过程中的问题,快速得到解答。

应用搭建

Step 1:数据管理-上传数据

  • 在数据管理页面,新增类目并上传文档,也可以选择默认类目进行文档上传,类目为用户提供文档管理的灵活性。

image.png

  • 导入数据,支持本地上传和OSS上传,以本地上传为例,支持文档拖拽或打开文件存储地址上传。

image.png

  • 文档解析需要花费一段时间,采用异步的方式,解析完成后会通知用户,用户也可以主动刷新页面。

image.png

Step 2:创建知识索引

  • 数据应用-知识索引页面,创建知识库,输入知识库描述,选择推荐配置即可。

说明

推荐配置:百炼推荐配置,在效果、推理成本、检索时延等方面的最佳实践。

自定义:完全开放的离线知识库配置,按照检索需求自由配置,获得推理效果和时延方面的不同体验。

image.png

  • 自定义配置支持用户选择不同的Embedding、Rank模型,以及是否开启多轮对话改写功能。

image.png

  • 点击下一步,从数据中心选择相关文件,选择导入完成,进行文档切分、构建索引等后续操作。

image.png

  • 支持用户配置分段长度和分段重叠。

image.png

  • 导入成功后会显示相应的状态提示。

image.png

  • 支持查看文档切分结果。

image.png

Step 3:创建百炼应用

  • 应用中心-我的应用,创建新应用。您可以参考应用创建的 智能体应用

image.png

  • 完成应用创建后,您可以在应用里进行对话测试,并查看中间日志结果。

image

Step 4:应用API

  • 创建完应用后,用户可以获取一段支持多语言版本的调用API,包括单轮对话、多轮对话、流式输出等能力支持,更多内容请参考SDK详情

(1)单轮对话

from http import HTTPStatus
from dashscope import Application


def call_agent_app():
    response = Application.call(app_id='***',#YOUR-APPID
                                prompt='请问百炼大模型服务平台提供哪些能力?',
                                api_key='****', #YOUR-API-KEY
                                )

    if response.status_code != HTTPStatus.OK:
        print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
    else:
        print('request_id=%s\n output=%s\n usage=%s\n' % (response.request_id, response.output, response.usage))

if __name__ == '__main__':
    call_agent_app()

测试结果如下。

request_id=22954c05-66ac-94fd-b1f7-9a6ef161190d
output={"text": "阿里云百炼大模型服务平台主要提供以下核心能力:\n\n1. **模型调优与微调**:平台支持模型的调优和微调功能,允许用户根据特定需求优化现有大模型或进行定制化训练,比如通过混合训练将用户自有数据与通义大模型的基础数据结合,以提升模型在特定领域的表现,同时保持基础模型的泛化能力。\n\n2. **Prompt工程**:提供Prompt模板和Prompt优化工具,帮助用户设计和改进prompt,使得大模型能更准确地执行特定任务,如将自然语言指令转化为编程变量名等。\n\n3. **智能问答**:适用于智能客服、世界百科等场景,推荐使用通义系列模型(如通义千问-Max、Turbo、Plus)来实现快速、精准的用户问答响应。\n\n4. **文档检索**:虽然具体细节未详述,但提到了文档检索作为应用场景之一,表明平台能支持信息搜索和文档管理相关的功能。\n\n5. **模型训练**:允许用户训练专属的大模型,包括从准备训练数据、模型训练到模型评测的全过程,支持自助上传数据、选择模型版本、进行混合训练等操作。\n\n6. **API-KEY管理**:提供API密钥的创建与管理功能,以便开发者安全地调用大模型服务,进行文字生成、问答交互等操作。\n\n7. **应用集成与部署**:通过预置的应用插件和便捷的集成方式,用户可以快速将大模型应用到自己的业务解决方案中,如电商场景的商品介绍、文案推广等。\n\n8. **模型评测**:平台具备模型性能评测的功能,帮助用户评估模型的准确度、效率等关键指标,确保模型应用的质量。\n\n综上,百炼大模型服务平台旨在为企业及开发者提供一站式的大模型商业化解决方案,覆盖了从模型开发、调优、训练到应用部署的全链路服务。", "finish_reason": "stop", "session_id": "ad487191306d4d7e868d4d50c0d09714", "thoughts": null, "doc_references": null}
usage={"models": [{"model_id": "qwen-max", "input_tokens": 1564, "output_tokens": 404}]}

(2)多轮对话

from http import HTTPStatus
from dashscope import Application


def call_with_session():
    response = Application.call(app_id='***',#YOUR-APPID
                                prompt='请问百炼大模型服务平台提供哪些能力?',
                                api_key='****‘, #YOUR-API-KEY
                                )

    if response.status_code != HTTPStatus.OK:
        print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
        return

    response = Application.call(app_id='***',#YOUR-APPID
                                prompt='请问通义千问系列包含哪些商业化模型?',
                                session_id=response.output.session_id,
                                api_key='****‘, #YOUR-API-KEY
                                )
    if response.status_code != HTTPStatus.OK:
        print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
    else:
        print('request_id=%s, output=%s, usage=%s\n' % (response.request_id, response.output, response.usage))


if __name__ == '__main__':
    call_with_session()

测试结果如下。

request_id=4bf9b34b-aa6c-99f7-86c5-1ca5dac24c1d, output={"text": "通义千问系列包含以下商业化模型:\n\n1. **qwen-turbo**:通义千问超大规模语言模型,支持中文、英文等不同语言输入,适用于多种文本生成和理解任务。\n2. **qwen-plus**:通义千问超大规模语言模型增强版,相比基础版本在某些方面有所增强,同样支持多语言输入。\n3. **qwen-max**:通义千问千亿级别超大规模语言模型,具备更强大的语言处理能力,支持中文、英文等多种语言。\n4. \n\n另外,还有针对视觉与语言融合任务的模型:\n\n- **qwen-vl-plus**:通义千问大规模视觉语言模型增强版,显著提升了细节识别和文字识别能力,适用于图像相关的任务,支持高分辨率图像输入。\n- **qwen-vl-max**:通义千问超大规模视觉语言模型,进一步增强了视觉推理和指令遵循能力,适合处理更加复杂和高级的视觉任务。\n\n这些模型覆盖了从基础的文字创作、文本处理、编程辅助、翻译服务、对话模拟到图像理解与处理等广泛的应用场景,满足不同行业和领域的AI需求。", "finish_reason": "stop", "session_id": "37d1303c8b89488393e02c2deff0c68e", "thoughts": null, "doc_references": null}, usage={"models": [{"model_id": "qwen-max", "input_tokens": 1777, "output_tokens": 274}]}

(3)流式输出

from http import HTTPStatus
from dashscope import Application


def call_with_stream():
    responses = Application.call(app_id='***',#YOUR-APPID
                                 prompt='请问百炼大模型服务平台提供哪些能力?',
                                 api_key='****‘, #YOUR-API-KEY
                                 stream=True
                                 )

    for response in responses:
        if response.status_code != HTTPStatus.OK:
            print('request_id=%s, code=%s, message=%s\n' % (
                response.request_id, response.status_code, response.message))
        else:
            print('output=%s, usage=%s\n' % (response.output, response.usage))


if __name__ == '__main__':
    call_with_stream()

测试结果如下。

output={"text": "阿里云百炼大模型服务平台提供了一系列全面的能力,旨在帮助企业客户及合作伙伴高效利用大模型技术。核心能力包括但不限于:\n\n1. **模型调优与微调**:平台允许用户对大模型进行调优和微调,以适应特定应用场景。这包括使用自有数据与预置的通义大模型或其他基础模型进行混合训练,以提升模型在特定领域的表现,同时保持基础模型的泛化能力。\n\n2. **Prompt工程**:提供了Prompt模板和Prompt优化工具,帮助用户设计和改进提示(Prompt),使得大模型能更准确地执行特定任务,比如将自然语言指令转换为编程任务或者优化问答系统的交互质量。\n\n3. **应用集成**:平台预置了适用于智能问答、文档检索等多种场景的应用或Prompt,便于用户直接将通义千问等大模型接入到现有的业务解决方案中,加速大模型的落地应用。\n\n4. **模型评测**:提供工具来评测模型性能,确保经过调优或微调的模型达到预期效果,支持自动化或半自动化的评测流程。\n\n5. **API访问与管理**:用户可以创建API-KEY以安全地调用大模型服务,支持对API的访问控制和管理,确保服务的安全性和可追溯性。\n\n6. **专属模型训练**:支持用户上传自定义数据,训练专属的大模型,满足特定行业的个性化需求。\n\n7. **模型广场与应用中心**:提供模型市场让用户浏览、选择和应用预训练好的模型,以及应用广场用于创建和部署基于大模型的应用服务。\n\n8. **资源与教程**:为用户提供详细的教程和指南,包括如何上传训练数据、训练模型、评测模型及创建专属应用等,降低技术门槛,加速项目实施。\n\n综上所述,百炼大模型服务平台是一个端到端的解决方案,覆盖从模型选型、调优、训练、评测到应用部署的全链路,旨在赋能企业实现智能化转型和提升业务效率。", "finish_reason": "stop", "session_id": "a8947b8ea6f842e3a8015e6cb9b92f21", "thoughts": null, "doc_references": null}, usage={"models": [{"model_id": "qwen-max", "input_tokens": 1564, "output_tokens": 420}]}