Spiga

2025年9月的文章归档

Net企业级AI项目3:构建企业知识库

2025-09-20 20:49:45

摘要:一、理论基础 1. RAG 概述 RAG:检索增强生成技术,我们先用一个例子来介绍一下什么是检索增强生成。 想象一下,你是一个很聪明的小学生,但你的知识都记在脑子里。如果老师问你一个很难的问题,比如:“恐龙是怎么消失的?”。你可能记得一些,但不完整。 这时候老师说:“来,我们开卷考!你可以去书架上查百科全书,然后再回答。” RAG 就是这样: 你有大脑(AI 的记忆)→ 你本来就知道很多事。 但遇到不知道的问题→ 你先跑去“书库”(数据库、网络等)快速查找相关的资料。 把查到的资料和你原来的知识合在一起,用你自己的话给出一个更好的答案。 所以,RAG 就是:先查资料,再结合自己的知识回答问题。这样就不会瞎编,答案更准确、更新鲜!是不是很像写作业时“先翻书,再总结”呢? 企业应用使用大模型时,至少会遇到下面2个问题: 大模型一旦训练结束,它就不会在知道结束时间之后发生的事了,也就是它有时效性缺失 另外,通用的大模型是使用公共数据来训练的,它没有企业私有的数据,也就是私有领域空白 为了解决上面2类问题,我们可以使用 RAG 技术,为模型提供一个图书馆,也就是通常说的企业知识库。 2. RAG 工作流程 在让 LLM 回答问题之前,先去外部知识库中检索相关的信息,然后将检索到的信息作为参考资料喂给LLM,让它基于资料生成答案。RAG 分为2个阶段: 索引阶段:后台异步运行的数据处理流程,将文本转换为向量,构建语义索引。 检索与生成阶段:能够在线实时响应用户请求的流程 ETL(提取、转换、加载)流: 加载:格式解析、编码标准化、元数据提取; 分割:LLM的上下文窗口有限,所以需要递归字符分割,分割可能造成语义不完整,所以在分割的2段语句通常会添加重叠窗口; 嵌入:人类语言翻译成机器语言,使用嵌入模型,将文本转换为高维向量,即高维的语义空间,后续可以使用余弦相似度 -1 ~ 1进行检索; 存储:将文本块内容、向量数据、元数据,持久化存储到向量数据库。 3. 嵌入模型选型 我们把文本转换成高维向量时,需要使用嵌入模型,那如何选择嵌入模型呢? 我们先看一下都有哪些选择: 闭源厂商云端模型 API: 优势:接入成本低、弹性扩展 劣势:数据隐私风险、长期成本不可控、网络延迟 开源模型本地私有化: 优势:绝对的数据安全、零增量成本、高性能与低延迟 劣…… 阅读全文

Net企业级AI项目2:企业助理智能体

2025-09-13 22:06:54

摘要:上一篇我们已经搭建好了 AI 应用的基础设施,今天我们开始创建企业助理智能体。 一、AI 网关集成 Agent 框架 关于 MAF 部分的内容,可以查看 Agent 智能体 ,我们这里直接上代码。 我们在 Qjy.AICopilot.AiGatewayService 项目添加一个 Agents 文件夹。 1. 创建聊天智能体 由于我们是一个多模型聊天应用,聊天模型数据是从数据库动态加载的。因而我们首先要创建一个工厂类,用来根据数据库中的数据来动态创建 Agent。 public class ChatAgentFactory(IServiceProvider serviceProvider) { public ChatClientAgent CreateAgentAsync(LanguageModel model, ConversationTemplate template) { using var scope = serviceProvider.CreateScope(); var httpClientFactory = scope.ServiceProvider.GetRequiredServiceIHttpClientFactory(); // 创建专属 HttpClient 对象 var httpClient = httpClientFactory.CreateClient(OpenAI); var chatClientBuilder = new OpenAIClient( new ApiKeyCredential(model.ApiKey ?? string.Empty), new OpenAIClientOptions { Endpoint = new Uri(model.BaseUrl), // 接管 OpenAI 的底层传输 Transport = new HttpClientPipelineTransport(httpClien…… 阅读全文

Net企业级AI项目1:项目基础搭建

2025-09-06 18:02:47

摘要:前面我做了一个使用 LangChain 做的 AI 通用聊天平台的示例,接下来我们回到 .NET 环境,完成一个企业级的 .NET+AI 的项目。目标是为企业通电,完成一个可扩展、可私有化部署的 AI 应用。让企业能用自然语音操作内部其他系统(ERP/CRM/OA)、获取知识、分析报告。 一、项目分析 1. 背景 我们需要完成一个AI企业助理系统,在现有的系统之上,覆盖一层“智能化层”,完成: 智能体和工具调用:赋予 AI 行动能力。 检索增强生成,企业知识中枢:赋予 AI 记忆和知识能力 AI数据分析,一句话生成可视化报表:赋予 AI 分析能力,如 NL2SQL 2. 需求分析 通过背景分析,我们梳理一下大致需要完成的功能: 智能助理(Agent):AI 交互入口(大脑) 对话与上下文管理:支持多轮上下文 意图识别:准确分析用户的输入,判断命令意图 工具调用:调用通过 MCP 接入的外部插件 富响应生成:响应不能局限于纯文本,包含表格、图表 企业知识中枢(RAG):处理非结构化知识(记忆) 文档处理流程:支持多种文档格式上传,实现自动解析、自动分块、向量化计算(嵌入)、向量存储 检索与回答:支持语义搜索,结合LLM生成精准、有来源依据的问答 企业级特性:权限控制、数据时效性 数据报表分析(NL2SQL):处理结构化数据(分析) NL2SQL引擎:自然语言翻译成 SQL 查询 多数据源支持 自动化分析与可视化:自动生成可视化图表,利用LLM总结图表中的趋势 报告导出 MCP 接入管理(Tools):负责连接外部系统(行动) 服务发现与管理:实现 MCP 服务的注册,注册到AI的能力库 调试与权限:确保操作安全 3. 技术选型 后端框架:ASP.NET Core(.NET 10) AI 框架:Semantic Kernerl(SK)、Agent Framework 知识库:向量数据库(Qdrant)+关系型数据库(PostgreSQL + pgvector) 大模型:兼容 OpenAI 接口、支持私有化部署 安全方案:Jwt + RABC 开发方式:云原生开发 .NET Aspire 部署方案:容器化部署 4. 开发流程 搭建环境与项目骨架 实现核心服务(认证 + AI 网关) 构建知识中枢(RAG …… 阅读全文