昇腾社区首页
中文
注册

开发流程

RAG SDK的完整开发流程如图1所示。用户可参见以下步骤完成接口调用。

运行阶段请使用普通用户HwHiAiUser执行相关用例。

知识库构建和在线问答支持并发,具体参见对应Demo。

图1 RAG SDK开发流程

  • 构建知识库。
    1. 上传领域文档,加载和切分。初始化文档处理器,用户可以根据上传的文件类型注册相应的文档解析器(参见文档解析langchain文档解析API或基于langchain自定义)和文档切分器(参见langchain文档切分API或基于langchain自定义),支持的文档类型包括Docx、Excel、Pdf、PowerPoint等。用户可以根据需要加载相应的解析和切分功能,输出为文档切分后的文本chunks。
    2. 文本向量化。加载embedding模型(参见嵌入模型),根据模型具体路径进行配置。文档切分后的文本chunks向量化后存入知识库管理中的向量数据库。
    3. 初始化知识库管理,参见知识库文档管理,包括初始化关系数据库和向量数据库(参见关系型数据库向量数据库)。

      切分后的文本chunks会存入关系数据库,chunks向量化后数据会存入向量数据库,一一对应。

  • 在线问答。
    1. 初始化缓存(参见缓存模块,可选),RAG SDK支持配置缓存和近似搜索,当用户问答时优先从缓存中搜索答案,问题命中则直接返回缓存中的回答,未配置缓存或问题未命中缓存则继续以下推理过程。
    2. 初始化大模型Chain(参见大模型Chain),通过Chain串联大语言模型,检索和精排模块进行问答,用户可以选择文生文、文生图、图生图等Chain,支持多轮对话、检索推理并行等方式。
    3. 初始化检索方式(参见检索),用户可以定义近似检索、查询改写检索等方式。问题经过embedding模型向量化后,通过检索在知识库中找到上下文context,进行下一步处理。
    4. 对检索到的上下文context通过reranker进行精排(参见重排模型,可选),提高检索质量。
    5. 最后将用户问题和上下文context组装成prompt,传入大语言模型(参见大语言模型)进行推理并获得回答返回给用户。如果有配置缓存,问答完成后会将问答对刷新到缓存中,再次问答命中时将缩短问答耗时。