码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Kernel Memory 入门系列:异步管道


    合集 - Kernel Memory(10)
    1.Kernel Memory 入门系列: RAG 简介2023-12-182.Kernel Memory 入门系列: Embedding 简介2023-12-193.Kernel Memory 入门系列:文档预处理2023-12-204.Kernel Memory 入门系列:快速开始2023-12-215.Kernel Memory 入门系列:Kernel Memory Service2023-12-226.Kernel Memory 入门系列:生成并获取文档摘要2023-12-257.Kernel Memory 入门系列:文档的管理2023-12-268.Kernel Memory 入门系列:自定义处理流程2023-12-279.Kernel Memory 入门系列:Semantic Kernel 插件2023-12-30
    10.Kernel Memory 入门系列:异步管道01-03
    收起

    Kernel Memory 入门系列:异步管道

    前面所介绍的处理流程都是基于同步管道的,即文档导入的时候,会等到文档处理完成之后才会返回。

    但是在实际的应用中,文档很多,而且文档的处理时间也不确定,如果采用同步的方式,那么就会导致整个流程的处理时间过长,也会导致整个流程的阻塞。因此,我们需要一种异步的方式来处理这种情况。

    注册消息队列

    当我们使用异步管道的时候,需要先注册消息队列,Kernel Memory中默认提供了几种消息队列的实现,包括:

    • RabbitMQ
    • Azure Queue
    • Simple Queue (file based, for testing)

    这里以Simple Queue为例,在构建Kernel Memory的时候,可以通过WithSimpleQueuesPipeline方法来注册Simple Queue。

    var _ = new KernelMemoryBuilder(appBuilder.Services)
    //...
    .WithSimpleQueuesPipeline() // <- register simple queue
    .Build();

    默认注册消息队列之后,处理流程就会以后台异步的方式进行处理。

    后台任务

    使用了异步队列之后,自定义的处理流程就注册方法就需要发生一些改变。

    Kernel Memory提供的方式是将所有的异步处理流程都注册为HostedService, 也就是后台任务。

    当注册自定义的处理流程的时候,就需要调用AddHandlerAsHostedService方法。

    builder.Services.AddHandlerAsHostedService("my_step");

    注册好的后台任务会监听消息队列,当有消息到达的时候,就会触发对应的处理流程。

    其余的导入、自定义处理流程和同步管道的方式一样。

    构建异步处理服务

    通过分布式的文件存储、向量存储和消息队列服务,就可以将文件的导入和处理流程进行分离,从而实现异步的处理流程。

    clientKernel Memorycontent Storagemessage queuehosted serviceImportDocumentAsyncSave documentSend messageReturn documentIdReceive messageGet documentRun pipelineGetDocumentStatusAsyncGet document StatusReturn document statusclientKernel Memorycontent Storagemessage queuehosted service

    整体的处理流程如下:

    1. 文件导入后,会保存到分布式的文件存储中,同时会发送消息到消息队列中。
    2. 后台任务会监听消息队列,当有消息到达的时候,就会触发对应的处理流程。
    3. 客户端可以通过GetDocumentStatusAsync方法来获取文档的处理状态。

    由此就可以实现异步的处理流程。

  • 相关阅读:
    基于System-Verilog的VGA彩条设计与仿真
    Android 12 WiFi 连接状态轮转
    如何创建美观的邮件模板并通过qq邮箱的SMTP服务向用户发送
    vector的模拟实现
    便捷解压Keka for Mac(压缩解压工具) v1.3.3中文版
    浅析如何在抖音快速通过新手期并积累粉丝
    停车位预约导航系统APP
    通师高专科技创新社训练赛(20221127)
    探索人工智能领域——每日30个名词详解【day4】
    Springboot多数据源及事务实现方案
  • 原文地址:https://www.cnblogs.com/xbotter/p/17941210/kernel_memory_async_pipeline
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号