唐茗 发表于 2025-7-13 20:47:01

LazyLLM使用数据流构建简单RAG

LazyLLM使用数据流构建简单RAG

LazyLLM数据流的问题

1.LazyLLM数据流#的作用与静态图问题
数据流的核心作用


[*]复杂应用一键部署

[*]传统方式:需手动逐个启动各组件(文档管理器、多个大模型等)
[*]LazyLLM数据流:通过统一start()并行启动所有模块
[*]并行化支持:需配置REDIS服务器作为轻量网关实现高效并行

[*]动态执行流程

[*]允许模块独立运行(如单独使用Document Retriever或大模型)
[*]无需强制依赖Pipeline或Parallel等数据流工具

静态图 vs 动态图

特性动态图 (LazyLLM采用)静态图执行方式边计算边执行预先编译完整计算图调试灵活性支持中间结果输出、断点调试难以实时调试性能优化灵活性优先可做依赖分析、并行优化适用场景需要快速迭代的AI应用高性能固定计算流程结论:LazyLLM采用动态图设计,符合AI应用需灵活调整的需求。
2. LazyLLM对思维链(Chain-of-Thought)输出的支持

支持机制


[*]线上模型

[*]统一封装各供应商的思维链输出差异
[*]新增reason或JK字段标准化输出思考过程
[*]数据格式扩展:user → think → assistant(原只有user → assistant)

[*]本地模型

[*]通过vLLM或LazyLLM框架原生支持
[*]输出带特殊标记的Token序列(如...包裹思考过程)

使用数据流简单构建RAG

import lazyllm

# ===实例化Document组件===
# 选择data path为下载好的数据路径
documents = lazyllm.Document(dataset_path=r"D:\task\AI应用开发\LazyLLM_Test\Demo_01\data_kb")

prompt = ('你将扮演一个人工智能问答助手,并完成一段对话任务。',
          '在本次任务中,您需要根据所提供的背景信息和问题给出答案。')

with lazyllm.pipeline() as pipe:
    # ===检索组件定义===
    pipe.retriever = lazyllm.Retriever(
      # 基于文档管理组件
      doc=documents,
      # 选择粗粒度节点组
      group_name="CoarseChunk",
      # 使用 BM25 中文检索算法
      similarity="bm25_chinese",
      # 设置检索的 topk 数量
      topk=3,
      # output_metadata选择content(只要节点内容,不要meta信息)
      output_format='content',
      join=" "
    )
    pipe.formatter = (lambda node, query: dict(context_str=node, query=query)) | bind(query=pipe.input)
    pipe.llm = lazyllm.OnlineChatModule(
      source= "glm",
      model="glm-4-plus",
      api_key="YOUR_API_KEY"
    ).prompt(lazyllm.ChatPrompter(instruction=prompt, extra_keys=['context_str']))

query = input('请输入您的问题\n')

res = pipe(query)

print(f'使用 RAG 答案: {res}')
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: LazyLLM使用数据流构建简单RAG