建设银行网站登录首页济南企业制作网站

张小明 2026/1/6 5:54:10
建设银行网站登录首页,济南企业制作网站,用动易做的诗歌协会网站,aqq安装下载简介 本文介绍了一种基于FAQ文档构建知识图谱并结合LLM的问答系统实现方法。通过从用户问题中抽取实体和关系#xff0c;在知识图谱中查找相关路径#xff0c;然后将这些信息与问题一起提供给LLM生成答案。文章详细展示了代码实现过程#xff0c;并讨论了系统局限性及改进方…简介本文介绍了一种基于FAQ文档构建知识图谱并结合LLM的问答系统实现方法。通过从用户问题中抽取实体和关系在知识图谱中查找相关路径然后将这些信息与问题一起提供给LLM生成答案。文章详细展示了代码实现过程并讨论了系统局限性及改进方向如优化prompt设计和结合RAG技术提升回答质量。基于模拟 FAQ 文档构建的 knowledge graph今天我带来一个基于 knowledge graph用第一部分介绍的方法构建和 LLM这里用的是 Gemma3–4b-it-qat与之前相同的简易 Question Answer (QA) System。我选择使用 Gemma3–4b是因为它体量足够小可以在普通笔记本上运行同时又非常擅长遵循指令。若你需要关于 KG、Gemma3 或如何在本地运行 LLM 的更多背景与信息建议先快速浏览我上一篇文章。在这篇博客中我们会用一个关于假想智能手机的 FAQ 文本作为样例利用上一篇文章中的代码同一仓库为其生成 knowledge graph然后搭建一个系统来回答与该产品相关的问题就像这样一些问答示例在本文中我们将学习什么是 QA System了解我们的思路查看代码讨论局限与改进方向一、什么是 QA System引用 Google 的定义A question answering (QA) system is a software application that takes a user’s question in natural language and provides a direct, relevant answer by processing the question’s intent and retrieving information from a knowledge source or generating a new response.在本文中我们的 “knowledge source” 是我用 Gemma3 生成的一段模拟 FAQ 文本你可以在这篇博客的 Github 仓库 中找到。我们可以运行仓库的 main.py 来构建 KG 并将其保存到输出目录python main.py --inputpath ./input/sample-faq.txt --outlabel faq该命令会将 networkx graph 保存为文件 “nx_graph.pkl”稍后在构建 QA system 时会加载它。二、我们的思路核心思路是从用户问题中抽取 entities/keywords找到与它们相关的所有 nodes 与 edges然后将这些信息与问题一起提供给 LLM让其基于 KG 中的信息进行回答。我们把方案正式化如下。给定一个问题q以及基于任意语料构建的 knowledge graph (G)使用 LLM 从q中抽取 named entitiesentity_keywords和 relations/predicatesrelation_keywords。从entity_keywords中枚举所有可能的成对组合。这使我们之后可以用 source 和 target 参数查询图因为我们无法预先假设某个 entity 是 source 还是 target。对于第 2 步得到的每一对 (u, v)在 G 中查找u与v之间的所有路径。这样可以找出两个实体之间的所有 relations/paths/knowledge。引入这一步是个 game-changer。对于找到的每条路径source 与 target node提取它们之间的 relation。例如 (box, include, charger)。将形成的 “triple” 加入列表relations。对relation_keywords做类似处理。对于每个 relationr找到所有由r连接的 edges形成 triples 并加入同一列表relations。最后一步将这些 triples 与问题q一起封装在一个 prompt 中传给 LLM让其基于给定事实triples与查询生成答案。三、代码实现首先用 main.py 构建 knowledge graphpython main.py --inputpath ./input/sample-faq.txt --outlabel faq然后从上一步生成的 pickle 文件中加载 graphimport pickleG pickle.load(open(graph_file, rb))我们需要定义一个函数能够接收文本输入与 system level prompt并从 LLM 获取响应。下面这个可复用函数实现了该功能def get_llm_response(text, system_prompt): response ollama.chat(modelmodel, messages[ {role: system, content: system_prompt}, {role: user, content: text} ]) resp_content response[message][content] return resp_content接下来需要从给定 query 中抽取 entities 和 relations对应上文的第 1 步。我构造了一个基础的 system prompt如下所示system_prompt_key_words You are a helpful assistant, expert of English language who can extracts keyword from the given question in root form (e.g. ran becomes run) and lowercase.The returned keywords should be critical to answer the question.Categorize the keywords into entity and relation keywords.keywords must be in root form and lowercase.The response should be in following format, no additional text:{entity: [list of entity keywords], relation: [list of relation keywords]}response get_llm_response(query, system_prompt_key_words)keyword_resp json.loads(response)entity_keywords keyword_resp.get(entity, [])relation_keywords keyword_resp.get(relation, [])假设entity_keywords为 [box, charger, phone]我们需要找出所有可能的 source-target 成对组合以便对图做全面查询pairs list(combinations(entities, 2))对每个实体对我们需要在图中查找所有 nodes 与 edgespaths list(nx.all_simple_paths(G, sourceu, targettarget_nodes))上述步骤第 1–6 步含以上代码都实现在下面这个函数中def search_kg2(G, query): response get_llm_response(query, system_prompt_key_words) keyword_resp json.loads(response) entity_keywords keyword_resp.get(entity, []) relation_keywords keyword_resp.get(relation, []) entities [part.strip() for part in entity_keywords] pairs list(combinations(entities, 2)) relations [] for u, v in pairs: target_nodes get_nodes(G, v) paths list(nx.all_simple_paths(G, sourceu, targettarget_nodes)) for path in paths: for i inrange(len(path)-1): for key in G[path[i]][path[i1]]: rel G[path[i]][path[i1]][key][relation] relations.append((path[i],rel, path[i1])) for rel_keyword in relation_keywords: relations.extend([(u, rel, v) for u, v, rel in G.edges.data(relation) ifstr(rel) rel_keyword]) return relations当我们从上述函数得到所有用 triplesentity-relation-entity表示的 edges 后就将这些 triples 嵌入到一个指令式 prompt 中传给 LLMcontext f You are given facts from a knowledge graph: {triples} Answer the user query based ONLY on these facts. Answer in full sentence. Query: {query} response ollama.chat(modelgemma3:4b-it-qat, messages[{role: user, content: context}])print(fquery: {query}\nAnswer:{response[message][content]})它会返回如下这类答案如你所见对于缺乏相关数据/事实的问题LLM 会合理地拒绝作答。四、局限性如上所示我们几乎没费太多力气就创建了一个基础的 QA system因为 LLM 负责了大量工作比如文本预处理、抽取等。但它还不完美。在我的初步评估中至少发现了几个问题。系统无法回答 “what is the warranty period?”因为在图里 warranty 是 relation 的 label但它从问题中被抽取成了 named entity导致系统找不到任何 edge。因此我们用于构建 knowledge graph 的核心 system prompt 还需要优化。还有一些问题需要稍微改写后系统才能回答。但我发现这类问题最终都可以归因于 KG 的构建方式或从 query 中抽取的 keyword。两者都可以通过改进 prompts 来修复。比如我使用的图中有一条 edge 是phone → support_dual_sim → nano sim这显然并不理想。但这些都可以通过更谨慎地设计用于构建 KG 的 prompt 来修正。正如我在上一篇文章中提到的我最初是用 chatGPT 生成的 prompt并在此基础上略作修改。在真实生产场景中应当花更多时间打磨 prompt。对于企业级应用还可以尝试更大的 model因为资源限制不再是问题。总之这种方法很有前景并且可以与 RAG 结合来提升回答质量。或许在下一篇博客中我会用更精细的 prompts 与 RAG 继续改进这个系统。五、如何学习AI大模型我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】第一阶段从大模型系统设计入手讲解大模型的主要方法第二阶段在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用第三阶段大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统第四阶段大模型知识库应用开发以LangChain框架为例构建物流行业咨询智能问答系统第五阶段大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型第六阶段以SD多模态大模型为主搭建了文生图小程序案例第七阶段以大模型平台应用与开发为主通过星火大模型文心大模型等成熟大模型构建大模型行业应用。学会后的收获• 基于大模型全栈工程实现前端、后端、产品经理、设计、数据分析等通过这门课可获得不同能力• 能够利用大模型解决相关实际项目需求 大数据时代越来越多的企业和机构需要处理海量数据利用大模型技术可以更好地处理这些数据提高数据分析和决策的准确性。因此掌握大模型应用开发技能可以让程序员更好地应对实际项目需求• 基于大模型和企业数据AI应用开发实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能 学会Fine-tuning垂直训练大模型数据准备、数据蒸馏、大模型部署一站式掌握• 能够完成时下热门大模型垂直领域模型训练能力提高程序员的编码能力 大模型应用开发需要掌握机器学习算法、深度学习框架等技术这些技术的掌握可以提高程序员的编码能力和分析能力让程序员更加熟练地编写高质量的代码。1.AI大模型学习路线图2.100套AI大模型商业化落地方案3.100集大模型视频教程4.200本大模型PDF书籍5.LLM面试题合集6.AI产品经理资源合集获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做杂志的网站有哪些临沂建设工程招聘信息网站

Frappe Gantt:零基础3小时精通项目时间管理的终极指南 【免费下载链接】gantt Open Source Javascript Gantt 项目地址: https://gitcode.com/gh_mirrors/ga/gantt 还在为复杂的项目排期而头疼吗?每天面对杂乱无章的任务时间线,你是否…

张小明 2026/1/5 17:04:33 网站建设

酷炫flash网站怎么做好网站开发、设计

Excalidraw vs Miro:谁才是开源时代的白板之王? 在分布式团队成为常态的今天,一场技术会议可能涉及五地八人的远程协作。会议室里不再有粉笔灰飞扬的白板,取而代之的是浏览器中跳动的光标与实时更新的图形元素。然而,当…

张小明 2026/1/5 17:04:30 网站建设

做外贸的人常用的网站专业网站设计企业

Blender 3MF插件完全指南:快速掌握3D打印文件导入导出 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender 3MF Format插件是专为Blender用户设计的强大工…

张小明 2026/1/5 10:21:38 网站建设

建筑业资质查询网站海城整站优化

系统监控:SNMP、环境传感器与IPMI的综合应用 1. SNMP的使用 1.1 准备工作 要使用SNMP监控设备,首先需要在Nagios服务器上获取并安装net - snmp库,该库可从www.net - snmp.org免费获取。安装完成后,可能需要重新构建插件以安装check_snmp,因为它依赖于net - snmp库。 1…

张小明 2026/1/5 2:12:37 网站建设

南昌网站设计网络媒体设计与制作

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个简化的电商系统,包含订单处理模块。使用FunctionalInterface定义订单处理策略接口,实现三种不同的订单处理策略(普通、VIP、秒杀),并通过…

张小明 2026/1/5 6:37:39 网站建设

建设银行网网站打不开广州做家教的网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个企业级Windows 10部署方案:1. 基于VMware的黄金镜像制作流程;2. 使用sysprep进行系统封装;3. 配置自动加入域(contoso.com)的应答文件&a…

张小明 2026/1/5 17:03:15 网站建设