当前位置: 首页 > news >正文

.NET+AI: (微家的AI开发框架)什么是内核记忆(Kernel Memory)?

.NET+AI: (微家的AI开发框架)大家赶紧学习!!!

什么是内核记忆(Kernel Memory)

Kernel Memory,内核记忆(KM)是一种多模态人工智能服务,旨在为应用程序提供长期记忆解决方案,模仿人类存储信息的记忆能力。专门通过自定义连续数据混合管道对数据集进行高效索引,并支持检索增强生成(RAG)。

KM 可以作为一个Web服务独立部署,也可以作为一个插件集成到ChatGPT/Copilot/Semantic Kernel 中,也可以作为一个.NET 库集成到应用中。

在这里插入图片描述

在这里插入图片描述

通过利用先进的嵌入和大型语言模型,KM 支持自然语言查询,以便从索引数据中获取答案,并返回带有引用和指向原始来源的链接。

Kernal Memory vs Semantic Memory

内核记忆(KM)是一项基于开发语义内核(SK)和语义记忆(SM)过程中所收到的反馈和汲取的经验教训而构建的服务。它提供了一些原本需要手动开发的功能,例如存储文件、从文件中提取文本、提供保护用户数据的框架等。KM 的代码库完全使用.NET 编写,这消除了用多种语言编写和维护功能的需求。作为一项服务,KM 可以在任何语言、工具或平台上使用,例如浏览器扩展和 ChatGPT 助手。

语义记忆(Semantic Memory,SM)是适用于 C#、Python 和 Java 的库,它包装了对数据库的直接调用并支持向量搜索。它是作为语义内核(Semantic Kernel,SK)项目的一部分开发的,并且是长期记忆的首次公开迭代。核心库以三种语言进行维护,而受支持的存储引擎列表(称为“连接器”)因语言而异。

特性Kernel MemorySemantic Memory
数据格式Web页面、PDF、图像、Word、PowerPoint、Excel、Markdown、文本、JSON、HTML仅文本
搜索余弦相似度、带过滤器的混合搜索(AND/OR条件)余弦相似度
语言支持任何语言,命令行工具,浏览器扩展,低代码/无代码应用,聊天机器人,助手等C#、Python、Java
存储引擎Azure AI Search、Elasticsearch、MongoDB Atlas、Postgres+pgvector、Qdrant、Redis、SQL Server、内存KNN、磁盘KNNAzure AI Search、Chroma、DuckDB、Kusto、Milvus、MongoDB、Pinecone、Postgres、Qdrant、Redis、SQLite、Weaviate
文件存储Disk、Azure Blob、AWS S3、MongoDB Atlas、内存(易失性)-
RAG-
摘要-
OCR是,通过Azure Document Intelligence-
安全过滤器-
大型文档摄取是,包括使用队列的异步处理(Azure Queues、RabbitMQ、基于文件的或内存队列)-
文档存储-
自定义存储架构一些DBs-
带内部嵌入的向量DBs-
同时写入多个向量DBs-
LLMsAzure OpenAI、OpenAI、Anthropic、Ollama、LLamaSharp、LM Studio、Semantic Kernel ConnectorsAzure OpenAI、OpenAI、Gemini、Hugging Face、ONNX、自定义等
带专用分词器的LLMs
云部署-
带OpenAPI的Web服务-

核心概念

Document

文档,将信息(一个或多个文件,照片,或一段文本)上传到KM时,这些数据被打包为一个文档,并拥有唯一ID,通过这个ID 可以更新、替换或删除该文档的数据。以下示例中一次导入多个不同类型的文件,但它们被命名为doc001 Document。

var memory = new KernelMemoryBuilder().WithOpenAIDefaults(env["OPENAI_API_KEY"]).Build<MemoryServerless>();await memory.ImportDocumentAsync(new Document("doc001").AddFiles(["file1.txt", "file2.docx", "file3.pdf"]);

如果再次以相同Document ID 导入新文档,则之前导入的文档会被覆盖。

Tag

标签,是一个键值对,通过给Document 打标签,以便在搜索时,通过指定标签限定搜索文档范围。以下示例中可以看出一个Document 可以有多个Tag,一个Tag 可以有多个值。

var memory = new KernelMemoryBuilder().WithOpenAIDefaults(env["OPENAI_API_KEY"]).Build<MemoryServerless>();await memory.ImportDocumentAsync(new Document("doc001").AddFiles(["file1.txt", "file2.docx", "file3.pdf"]).AddTag("user", "Taylor").AddTag("collection", "meetings").AddTag("collection", "NASA").AddTag("collection", "space").AddTag("type", "news"));

Index

索引,KM 利用向量存储来保存摄入的文档信息,像 Azure AI Search、Qdrant、Elastic Search、Redis 等解决方案。
为了对不同的数据加以区分,通过指定不同的索引名称来实现,索引之间的数据是隔离的。在存储信息、搜索和提问时,KM始终在一个索引的范围内工作。
换句话说,可以将多个Document 存储在单个索引下。

var memory = new KernelMemoryBuilder().WithOpenAIDefaults(env["OPENAI_API_KEY"]).Build<MemoryServerless>();await memory.ImportDocumentAsync(document: new Document("doc001").AddFiles(["file1.txt", "file2.docx", "file3.pdf"]),index:"index1");
await memory.ImportDocumentAsync(document: new Document("doc002").AddFiles(["file4.txt", "file5.docx"]),index:"index1");

当未指定index时,将存储在名为default的索引下。同理,AskAsyncSerachAsync在未指定index时,默认在default索引下进行检索。

// 在index1索引下检索
var result = await  memory.AskAsync("What is Kernel Memory?", index: "index1");
// 在default索引下检索
var result2 = await  memory.SearchAsync("What is Kernel Memory?");

Chunk

对读取的文档数据进行处理,将大块数据分解为更小、更易于处理的单元的过程,称为chunking,分解得到的单元称为chunk

通过分块,可以将文本拆分为单词、句子、段落还是整个文档,分块级别决定了检索到的信息的颗粒度。

举例而言:假设您在法律研究应用程序中使用RAG模型,并且您需要从大型法律文档中检索相关部分。用户询问,“法律对医疗保健中的数据隐私有什么规定?”。
如果系统采用文档级分块,它将检索整个法律文档,这可能是压倒性和低效的。然而,通过使用段落级分块,系统能检索专门讨论医疗保健数据隐私法的段落,给用户一个高度相关和简洁的答案。

如果没有分块,系统可能会检索文档中不相关的部分,从而提供糟糕的用户体验。通过分块,检索变得有针对性和有意义,增强了模型生成准确和上下文感知响应的能力。

核心技术与框架解析

Semantic Kernel:连接AI与业务逻辑的桥梁

Semantic Kernel是微软推出的开源框架,它能无缝整合大语言模型(LLM)能力与传统代码逻辑,让开发者可以通过自然语言提示词和C#代码结合的方式,快速构建AI驱动的应用。其核心优势在于提供了插件系统(Plugins)、记忆系统(Memory)和规划能力(Planning),这三者共同构成了实现RAG和MCP Agent的基础。

RAG:让应答更精准的知识检索增强

RAG技术的核心是通过检索外部知识库,为LLM提供精准的上下文信息,从而让生成的回答更符合业务事实。在销售场景中,产品手册、价格表、促销政策等都是关键的知识库内容。借助RAG,系统能在回答客户关于“某款产品的折扣力度”“售后服务范围”等问题时,不再依赖LLM的通用训练数据,而是从企业内部知识库中检索最新、最准确的信息,避免出现过时或错误的回答。

MCP Agent:多能力协同的销售智能体

MCP Agent(Multi-Capability Agent)指具备多种业务能力的智能代理,它能根据客户问题自动调用不同的功能模块(如产品查询、价格计算、订单状态跟踪等),实现端到端的智能应答。在Semantic Kernel中,MCP Agent可以通过规划能力分析用户意图,然后调用对应的插件完成任务,例如当客户询问“购买100台A产品能享受多少折扣”时,Agent会先调用产品信息插件获取A产品的基础价格,再调用折扣计算插件根据采购量算出具体折扣,最后整合结果生成自然语言回答。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这张图表列出了20个关于AI代理(Agent)的核心概念,每个概念都有简短的描述和图标。以下是这些概念的整理:

  1. Agent(代理):能够感知、推理并采取行动以实现目标的自主实体。
  2. Environment(环境):代理操作和交互的周围上下文。
  3. Perception(感知):代理解释感官或环境数据的过程。
  4. State(状态):代理对世界当前内部条件或表示。
  5. Memory(记忆):存储最近或历史信息以供连续性和学习使用。
  6. Large Language Models(大型语言模型):支持语言理解和生成的基础模型。
  7. Reflex Agent(反射代理):基于预定义的“条件-行动”规则做出决策的代理。
  8. Knowledge Base(知识库):代理用于做出决策的结构化或非结构化数据存储库。
  9. CoT (Chain of Thought)(思维链):代理为复杂任务表达中间步骤的推理方法。
  10. React(反应):结合逐步推理与环境行动的框架。
  11. Tools(工具):代理用来增强能力的API或外部系统。
  12. Action(行动):代理执行的任何任务或行为。
  13. Planning(规划):制定一系列行动以实现特定目标。
  14. Orchestration(协调):协调多个步骤、工具或代理以完成任务流程。
  15. Handoffs(交接):不同代理之间任务或工作的转移。
  16. Multi-Agent System(多代理系统):多个代理在同一环境中操作和协作的框架。
  17. Swarm(群体):许多代理遵循局部规则而无需中央控制的涌现智能行为。
  18. Agent Debate(代理辩论):代理争论对立观点以完善或改进最终响应的机制。
  19. Evaluation(评估):衡量代理行动有效性的过程。
  20. Learning Loop(学习循环):代理通过持续从反馈中学习来改进性能的循环。

这些概念涵盖了AI代理的各个方面,从基本的定义和功能到更复杂的交互和学习过程。

系统架构与实现步骤

架构设计

销售业务智能应答系统的架构主要分为三层:

  • 数据层:存储产品信息、价格政策、销售案例等知识库数据,可采用向量数据库(如Qdrant、Milvus)存储文本向量,以便高效检索。
  • 核心层:基于Semantic Kernel实现,包含RAG模块(负责知识检索)、MCP Agent模块(负责意图解析与能力调用)和LLM接口(对接GPT-4、Azure OpenAI等模型)。
  • 应用层:提供API接口或前端交互界面,供销售人员或客户使用,支持文本输入、语音输入等多种交互方式。
具体实现步骤

环境准备与项目初始化

  • 安装Semantic Kernel相关NuGet包: Microsoft.SemanticKernel 、 Microsoft.SemanticKernel.Plugins.Memory 等。

  • 配置LLM服务:通过API密钥连接Azure OpenAI或其他LLM服务,在Semantic Kernel中初始化 Kernel 对象。
    构建RAG模块

  • 知识库导入:将产品手册、价格表等文档解析为文本片段,使用Semantic Kernel的 TextChunker 进行分块处理。

  • 向量存储:调用 Kernel.Memory.SaveInformationAsync 方法,将文本片段及其向量存储到向量数据库中。

  • 检索逻辑:当接收用户问题时,通过 Kernel.Memory.SearchAsync 检索与问题最相关的知识库片段,作为上下文传递给LLM。

开发MCP Agent能力插件
  • 产品查询插件:实现 GetProductInfo(string productName) 方法,返回产品规格、价格等信息。
  • 折扣计算插件:实现 CalculateDiscount(int quantity, string productId) 方法,根据采购量和产品ID计算折扣。
  • 订单查询插件:实现 GetOrderStatus(string orderId) 方法,查询订单的当前状态。
  • 将插件注册到Semantic Kernel: kernel.ImportPluginFromObject(new SalesPlugins(), “SalesPlugins”) 。
Agent规划与应答生成
  • 意图解析:通过Semantic Kernel的 FunctionCalling 能力,让LLM分析用户问题,判断是否需要调用插件或直接使用RAG检索结果。
  • 多步骤处理:对于复杂问题(如“对比A和B产品的价格,并计算购买50台的总成本”),Agent会规划调用顺序(先调用产品查询插件获取A、B价格,再调用折扣计算插件分别计算成本,最后汇总)。
  • 结果生成:将插件返回的数据或RAG检索到的知识,通过LLM整理为自然、易懂的回答。

场景验证与优势体现

以一个实际销售场景为例:客户询问“你们的旗舰款打印机现在有什么优惠?如果公司采购20台,加上三年保修,总费用是多少?”

系统的处理流程如下:

接收问题后,MCP Agent通过意图解析,确定需要调用“产品查询”“折扣计算”和“保修价格”三个插件。
调用产品查询插件获取“旗舰款打印机”的基础价格和产品ID。
调用折扣计算插件,根据采购量20台和产品ID,计算出对应的折扣比例。
调用保修价格插件,获取三年保修的单台费用。
结合RAG检索到的“当前针对企业采购的额外10%补贴”信息,汇总计算总费用。
最后通过LLM生成包含具体价格明细、优惠说明的回答,同时附上产品参数链接(来自知识库)。

该系统的优势在于:

  • 准确性:依赖企业内部知识库和业务插件,避免LLM幻觉,确保价格、政策等信息精准无误。
  • 高效性:MCP Agent自动完成多步骤处理,无需人工干预,缩短响应时间。
  • 扩展性:新增产品或业务规则时,只需更新知识库或开发新插件,无需重构整个系统。

总结与展望

基于Semantic Kernel构建的销售业务智能应答系统,通过RAG解决了知识精准性问题,借助MCP Agent实现了复杂业务场景的自动化处理,为销售团队提供了强大的智能支持。在实际应用中,还可结合用户画像、历史对话记录等数据进一步优化应答效果,例如根据客户过往采购记录推荐合适的优惠方案。

随着LLM技术和Semantic Kernel框架的不断发展,这类智能应答系统将在销售线索挖掘、客户关系维护等领域发挥更大作用,推动销售业务向更高效、更智能的方向转型。

http://www.dtcms.com/a/453154.html

相关文章:

  • 版本控制器 git(2)--- git 基本操作
  • 数字信号处理 第六章(IIR数字滤波器设计)
  • 辽宁专业网页设计免费建站正规seo服务商
  • 西安将军山网站建设wordpress评论模板怎么改
  • 抽象类定义
  • 基于sprigboot的农贸市场摊位管理系统(源码+论文+部署+安装)
  • 基于Flink的AB测试系统实现:从理论到生产实践
  • 开源 C++ QT QML 开发(八)自定义控件--圆环
  • CTF攻防世界WEB精选基础入门:backup
  • 建设信用卡积分网站网站备案掉了
  • 免杀技术(高级中的基础手法)之PE扩大节注入ShellCode
  • C#自动化程序界面
  • 什么是Maven?关于 Maven 的坐标、依赖管理与 Web 项目构建
  • 新上线网站如何做搜索引擎市场监督管理局
  • 《投资-84》价值投资者的认知升级与交易规则重构 - 第二层:是虚拟的不可见的价值,可以被正向放大、也可以反向放大
  • 上虞中国建设银行官网站网站开发的工作总结
  • Cortex-M 中断挂起、丢中断与 EXC_RETURN 机制详解
  • Qt C++ :QWidget类的主要属性和接口函数
  • 串扰14-蛇形走线与信号延迟
  • Java SpringBoot(一)--- 下载Spring相关插件,创建一个Spring项目,创建项目出现的问题
  • 业务过程需求在软件需求中的特殊性与核心地位
  • 域名哪个网站续费商洛市住房城乡建设厅网站
  • 笛卡尔积 = 所有可能组合 = 行数相乘
  • MySQL——数据类型和表的操作
  • 工作笔记-----ICache对中文显示的影响问题
  • 什么是 Maven?关于 Maven 的命令、依赖传递、聚合与继承
  • nat静态地址转化
  • 计算机网站开发要考什么证竞价培训班
  • 《算法与数据结构》第七章[算法3]:图的最小生成树
  • 文科和理科思维差异:推演与归纳