AI知识图谱生成器实战:从文本到结构化洞察的完整指南

news2026/5/4 2:42:14
1. 从文本到洞察AI知识图谱生成器的实战拆解最近在整理一些行业报告和学术论文时我遇到了一个老问题面对动辄几十上百页的文档如何快速理清其中的核心概念、人物、事件以及它们之间错综复杂的关系手动梳理不仅耗时耗力还容易遗漏关键联系。传统的思维导图工具虽然有用但依然需要人工阅读和提炼效率瓶颈明显。就在我为此头疼时我发现了 robert-mcdermott 开源的ai-knowledge-graph项目。这个工具的核心思路非常吸引人它利用大语言模型自动从非结构化的文本中提取“主体-谓词-客体”三元组并构建成一个可交互的知识图谱。简单来说就是你给它一篇文档它帮你把文档里的“谁”、“做了什么”、“和谁有关”这些信息抽出来画成一张关系网。这听起来就像是给文本分析装上了“自动驾驶”系统。我花了一周时间把这个项目从源码到应用彻底跑了一遍用它处理了技术白皮书、历史资料甚至产品说明书。实测下来它确实能大幅提升信息梳理的效率尤其适合研究人员、内容分析师、产品经理或者任何需要深度消化长文档的朋友。但和所有工具一样想要用好它光知道命令怎么敲可不够你得理解它每一步在干什么以及怎么根据你的数据“调教”它。接下来我就结合自己的实操经验把这个项目的里里外外给你讲透。2. 核心架构与设计哲学为什么是“分而治之”拿到一个开源项目我习惯先看它的设计思路这比直接看代码更重要。ai-knowledge-graph的设计清晰地体现了处理复杂问题的“分而治之”策略。它没有试图让 LLM 一口气读完整个长文档并吐出完美的图谱——这既不现实受限于上下文长度效果也难以保证容易产生幻觉或遗漏。相反它将整个过程拆解为四个逻辑严密的阶段每个阶段解决一个子问题最终串联成完整流程。2.1 四阶段流水线解析第一阶段是文本分块与初始三元组提取。这是整个流程的基石。项目不会把整篇文档扔给 LLM而是先用一个简单的滑动窗口算法将文本切成固定大小比如200词且有重叠比如20词的片段。这么做的原因有两个一是绕过 LLM 的上下文长度限制二是让 LLM 能更专注地分析局部语境提高实体和关系提取的准确性。每个文本块被独立送入 LLM由 LLM 识别其中的实体主体和客体以及连接它们的关系谓词。第二阶段是实体标准化。想象一下在第一阶段中LLM 可能在文档的不同位置将“人工智能”、“AI”、“Artificial Intelligence”识别为三个不同的实体。但实际上它们指向同一个概念。如果不对这些实体进行归一化生成的知识图谱就会充满冗余节点变得支离破碎。实体标准化阶段就是来解决这个问题的。它通过文本规范化如统一大小写、去除冠词和可选的 LLM 辅助对齐将这些同义异名的实体合并确保图谱的简洁性和一致性。第三阶段是关系推理。即使经过前两阶段我们得到的可能还是一个“群岛”式的图谱——几个内部连接紧密但彼此孤立的子图。这是因为原文可能没有明确提及某些跨段落或跨章节的实体间关系。关系推理阶段的目标就是“架桥”通过规则如传递性推理A是B的创始人B是C的母公司可推断A与C存在关联和 LLM 的常识推理能力在这些孤立的“社区”之间建立合理的连接从而形成一个全局连通、更具洞察力的知识网络。第四阶段是可视化呈现。数据最终需要被人类理解。项目使用PyVis库生成交互式 HTML 页面。这里的设计亮点在于它不仅仅是把节点和边画出来还融入了图计算的思想节点大小通常由中心性指标如度中心性决定重要实体一目了然节点颜色代表通过社区发现算法如 Louvain 方法识别出的不同主题集群实线代表原文提取的关系虚线则代表推断出的关系。这种视觉编码让图谱的结构和重点跃然纸上。2.2 配置驱动的灵活性这个项目的另一个优秀设计是高度的可配置性。所有核心参数从 LLM 的型号、温度到分块大小、是否启用标准化和推理都通过一个config.toml文件集中管理。这意味着你可以轻松地在“精度优先”和“成本/速度优先”之间做权衡。实操心得配置是调优的关键。处理严谨的学术论文时我会把temperature调低如0.1并启用所有标准化和推理选项以求结果的准确和完整。而在快速浏览市场报告、只需抓取核心关系时我可能会关闭推理 (inference.enabled false)并增大分块尺寸以减少 LLM 调用次数速度能快上好几倍。3. 环境搭建与核心依赖详解工欲善其事必先利其器。这个项目基于 Python 3.11依赖管理清晰。你可以用传统的pip也可以用更现代的uv。我个人更推荐uv它在创建虚拟环境和依赖解析上速度更快能避免很多环境冲突的坑。3.1 一步到位的环境准备假设你已经安装了 Python 3.11 或更高版本以下是快速上手的命令# 克隆项目仓库 git clone https://github.com/robert-mcdermott/ai-knowledge-graph.git cd ai-knowledge-graph # 方法一使用 uv推荐 # 安装 uv如果尚未安装 curl -LsSf https://astral.sh/uv/install.sh | sh # 同步依赖并进入虚拟环境 uv sync source .venv/bin/activate # Linux/macOS # 或 .venv\Scripts\activate # Windows # 方法二使用 pip python -m venv .venv source .venv/bin/activate # 或 .venv\Scripts\activate pip install -r requirements.txt核心依赖库主要有以下几个了解它们有助于排查问题openai/litellm: 用于与 LLM API 交互。litellm是个神器它统一了众多云厂商和本地模型的 API 格式。networkx: 图计算库负责在内存中构建、分析知识图谱计算中心性、检测社区等。pyvis: 基于 Vis.js 的库用于将networkx图对象渲染成炫酷的交互式网页。toml: 用于解析配置文件。tqdm: 在控制台显示进度条处理长文档时能让你知道进度。3.2 LLM 后端配置本地与云端的选择项目的强大之处在于它对任何OpenAI 兼容 API的支持。这意味着你的选择极其灵活本地模型性价比/隐私首选使用Ollama或LM Studio在本地电脑运行开源模型。配置示例 (config.toml):[llm] model qwen2.5:7b # 或 llama3.2gemma2:2b 等 base_url http://localhost:11434/v1 # Ollama 的默认地址 api_key not-needed # 本地运行通常不需要 key max_tokens 4096 temperature 0.2优势完全免费数据不出本地适合处理敏感文档。注意需要你的电脑有足够内存7B模型约需14GB以上。temperature设置低一些0.1-0.3可以减少模型的“胡言乱语”。云端 API省心/能力最强使用 OpenAI GPT、Anthropic Claude 或通过LiteLLM代理的 Azure、Bedrock 等服务。配置示例:[llm] model gpt-4o-mini # 或 claude-3-haikuazure/gpt-35-turbo base_url https://api.openai.com/v1 # 如果使用 LiteLLM可能是 http://localhost:4000 api_key sk-your-actual-key-here # 务必保管好优势模型能力强提取准确度高无需担心本地算力。成本提示处理长文档数十万字可能会产生数美元的 API 调用费用。可以通过调整chunk_size来平衡成本与效果。避坑指南API 连接测试。在投入大量文本处理前务必先做个测试。你可以创建一个仅包含一两句话的test.txt文件然后运行命令。观察控制台输出如果卡在“Processing chunk”很久或报错很可能是base_url或api_key配置有误。对于本地 Ollama确保模型已正确拉取 (ollama pull qwen2.5:7b)。4. 从零到一生成你的第一个知识图谱环境配好了我们来实战操作一遍。我以一个关于“电动汽车发展”的简短段落为例让你感受完整流程。4.1 准备输入与配置文件首先创建一个名为ev.txt的文本文件内容如下特斯拉公司由马丁·艾伯哈德和马克·塔彭宁于2003年创立埃隆·马斯克随后加入并领导了公司。特斯拉推出了Model S、Model 3等车型推动了电动汽车的普及。电池技术是电动汽车的核心宁德时代是主要的电池供应商。自动驾驶功能依赖于人工智能和传感器融合技术。充电网络的建设如特斯拉超级充电站缓解了用户的里程焦虑。接着调整config.toml这里我们为了快速测试使用本地 Ollama 的轻量模型[llm] model qwen2.5:1.5b # 一个小参数模型速度快 api_key not-needed base_url http://localhost:11434/v1 max_tokens 2048 temperature 0.1 # 低温度追求确定性输出 [chunking] chunk_size 50 # 文本短分块也可以小 overlap 10 [standardization] enabled true use_llm_for_entities false # 首次测试先关闭LLM标准化以简化流程 [inference] enabled true use_llm_for_inference false # 先关闭LLM推理 apply_transitive true # 启用基于规则的传递推理4.2 运行生成命令打开终端在项目目录下运行uv run generate-graph.py --input ev.txt --output my_first_kg.html --debug这里使用了--debug参数这非常有用它会在控制台打印出 LLM 的原始回复和提取的 JSON方便你诊断问题。4.3 解读控制台输出运行后你会看到类似下面的分阶段输出PHASE 1: INITIAL TRIPLE EXTRACTION Processing text in 3 chunks... Processing chunk 1/3... Extracted triples: [{subject: 特斯拉公司, predicate: 创立于, object: 2003年}, ...] ... Extracted a total of 12 triples from all chunks. PHASE 2: ENTITY STANDARDIZATION Standardizing entity names... After standardization: 12 triples and 10 unique entities. PHASE 3: RELATIONSHIP INFERENCE Inferring additional relationships... Applied transitive inference: (特斯拉公司 - 推出 - Model S) (Model S - 是 - 电动汽车) (特斯拉公司 - 推出 - 电动汽车) Added 2 inferred relationships. Final knowledge graph: 14 triples. PHASE 4: VISUALIZATION Knowledge graph visualization saved to my_first_kg.html. Graph Statistics: {nodes: 10, edges: 14, original_edges: 12, inferred_edges: 2}关键信息解读初始提取从3个文本块中抽出了12个三元组。实体标准化将实体数从可能更多合并为了10个唯一实体。关系推理通过传递规则自动推断出了2条新关系例如因为特斯拉推出了Model S而Model S是电动汽车所以系统推断“特斯拉推出电动汽车”。最终图谱共包含10个节点和14条边。4.4 分析与交互可视化用浏览器打开生成的my_first_kg.html。你应该能看到一个交互式网络图。节点代表实体如“特斯拉公司”、“埃隆·马斯克”、“电池技术”、“人工智能”。节点大小可能不同连接数多的节点如“特斯拉公司”会更大。边代表关系悬停在边上会显示具体的谓词如“领导”、“依赖于”、“是主要供应商”。社区颜色算法可能将“特斯拉公司”、“Model S”、“埃隆·马斯克”染成同一颜色汽车制造相关将“人工智能”、“传感器融合”染成另一颜色技术相关。虚线代表推断出的关系如“特斯拉公司 — 推出 — 电动汽车”。你可以用鼠标拖拽节点、滚轮缩放、点击节点高亮其连接。尝试点击图例中的“Inferred Edges”可以切换虚线的显示这能帮你区分哪些是原文明确提到的哪些是系统推断的。实操心得从简单文本开始。强烈建议你第一次运行时就像我上面这样用一个自己编写的、结构清晰的短文本。这能帮你快速验证整个流程是否通畅并直观地理解每个阶段对最终图谱产生了什么影响。如果直接用上百页的PDF去试一旦出问题排查起来会困难得多。5. 处理长文档的进阶策略与参数调优当你对基本流程熟悉后就可以挑战真正的长文档了比如一篇几十页的行业分析 PDF。这里面的门道就多了。5.1 分块策略的权衡艺术chunk_size和overlap是影响提取效果和成本的最关键参数。chunk_size(分块大小)决定了每次送入 LLM 的文本量。太小如50词会割裂完整的句子或语境导致 LLM 提取的关系碎片化。太大如500词可能超出模型上下文且 LLM 可能无法有效关注到文本块内部的所有细节。我的经验起点是 150-250 词这个范围对大多数模型来说既能容纳一定语境又不会信息过载。overlap(重叠词数)用于防止实体和关系在分块边界处被切断。例如一个重要的关系可能主语在块A的末尾宾语在块B的开头。没有重叠这个关系就会丢失。重叠通常设为chunk_size的 10%-20%。但重叠意味着同一段文本会被多次处理增加了 LLM 调用次数和成本。调整建议 处理技术文档时概念密集句子较长我倾向于使用chunk_size200, overlap30。 处理新闻或叙事性文本时段落较短语境转换快可以用chunk_size150, overlap20。5.2 启用高级特性LLM辅助的标准化与推理在基础测试中我们关闭了use_llm_for_entities和use_llm_for_inference。但对于复杂的长文档这两个功能能极大提升图谱质量。LLM 实体标准化当你的文档中同义词、缩写、全称混用时简单的文本规范化就不够了。启用此功能后系统会将所有实体列表交给 LLM问它“以下哪些实体指的是同一个东西” LLM 利用它的常识来回答比如它能识别“AI”、“A.I.”、“人工智能”、“Artificial Intelligence”应被归一化为“人工智能”。配置use_llm_for_entities true。注意这会额外消耗一次 LLM 调用。LLM 关系推理这是让图谱从“连接已知”到“发现未知”的关键。系统先用图算法找出几个互不连通的子图社区然后从每个社区挑几个代表实体问 LLM“基于常识实体A和实体B之间可能存在什么关系” 例如在“工业革命”文档中它可能将“蒸汽机”社区和“纺织厂”社区连接起来推断出“蒸汽机为纺织厂提供了动力”。配置use_llm_for_inference true。注意这是最耗资源也最慢的步骤但生成的关系往往最有洞察力。5.3 处理超长文档的实用技巧预处理文本ai-knowledge-graph接收的是纯文本文件。如果你的源文件是 PDF、Word 或网页需要先用其他工具如pypdf、python-docx、beautifulsoup将其转换为干净的文本。去除页眉页脚、参考文献、无关图片的标注能让 LLM 更专注于主体内容。分阶段处理对于极长的书稿可以按章节分别生成知识图谱最后再思考如何合并或对比。直接处理百万字文本对内存和 LLM 调用都是挑战。关注统计信息运行完成后控制台输出的统计信息节点数、边数、社区数是重要的质量参考。如果“推断边数”远大于“原始边数”说明文档内在联系隐含推理功能发挥了很大作用。如果节点数异常多可能需要检查实体标准化是否生效。6. 提示工程如何让LLM更好地理解你的领域项目的核心能力依赖于 LLM 从文本中提取三元组。它在src/knowledge_graph/prompts.py文件中定义了一系列“提示词”Prompt。理解并微调这些提示词是让工具适应你特定领域文档的“秘籍”。6.1 核心提示词剖析打开prompts.py你会看到几个关键函数get_extraction_prompt(text_chunk): 这是用于第一阶段三元组提取的提示词。它指示 LLM 扮演一个“信息提取专家”从给定文本中找出 SPO 三元组并以严格的 JSON 格式返回。它的质量直接决定了初始图谱的准确性。get_standardization_prompt(entities): 用于 LLM 辅助实体标准化。它要求 LLM 对给定的实体列表进行分组。get_inference_prompt(entity1, entity2): 用于 LLM 辅助关系推理。它要求 LLM 基于常识推测两个实体间可能的关系。6.2 如何定制提示词假设你处理的不是通用文本而是医学文献里面充满了专业术语和特定的关系类型如“抑制”、“表达”、“副作用”。你可以修改get_extraction_prompt让 LLM 更关注这些领域特定关系。修改前片段:def get_extraction_prompt(text_chunk): return fYou are an expert information extractor. Extract ALL subject-predicate-object (SPO) triplets from the following text. ... List of common predicates: is a, part of, located in, created by, used by, invented, discovered, affects, causes, has property, is property of, is same as, different from, related to, opposite of, before, after, enables, prevents, influences, impacts, depends on, derived from, contains, belongs to, works with, collaborated with, studied, published, developed, designed, built, founded, established, owns, operates, produces, manufactures, sells, buys, measures, calculated as, equals, greater than, less than. ... 修改后针对医学领域:def get_extraction_prompt(text_chunk): return fYou are an expert biomedical information extractor. Extract ALL subject-predicate-object (SPO) triplets from the following text, with a focus on biomedical interactions and properties. ... Pay special attention to predicates common in biomedical literature such as: inhibits, activates, binds to, expresses, mutates, causes disease, treats, is a symptom of, is a risk factor for, interacts with, regulates, upregulates, downregulates, metabolizes, is metabolized by, has side effect, is contraindicated with, is dosage of, is target of, is biomarker for. If a relationship is clearly biomedical (e.g., Drug A inhibits Protein B), use the specific predicate. For general relationships, use the common list. ... 重要提示修改提示词后你需要重新安装模块pip install -e .或确保 Python 使用的是修改后的源码。提示词的微调需要反复测试观察提取结果的变化。可以从一个小的、有代表性的文本片段开始测试。7. 可视化定制让你的图谱更清晰、更专业默认生成的 HTML 可视化已经不错但有时你可能需要调整样式或交互行为以更好地呈现或嵌入报告。可视化逻辑主要在src/knowledge_graph/visualization.py中。7.1 调整视觉参数你可以在visualization.py的_get_visualization_options函数中找到 PyVis 的配置字典。这里是一些常用的调整项节点物理效果physics下的配置控制着图的布局动态。如果节点乱飞或过于拥挤可以调整options { nodes: { font: {size: 14, face: Tahoma}, shape: dot, # 可改为 box, diamond, star 等 }, edges: { smooth: {type: continuous}, # 边为曲线 arrows: {to: {enabled: True, scaleFactor: 0.5}}, # 显示方向箭头 }, physics: { enabled: True, stabilization: {enabled: True, iterations: 200}, # 增加迭代使布局更稳定 barnesHut: { gravitationalConstant: -2000, # 负值越大节点排斥力越强图更舒展 centralGravity: 0.1, # 中心引力值越大节点越向中心聚拢 springLength: 150, # 边的理想长度 damping: 0.09 # 阻尼系数影响动画停止速度 } }, interaction: {hover: True, tooltipDelay: 200}, }生成图谱后在网页上也可以实时调整这些物理参数找到满意的布局后点击“Generate options”按钮可以把配置代码复制出来直接贴到源码里以后生成就固定了。颜色与主题社区颜色是自动分配的。如果你想手动指定某类节点的颜色可以在_add_nodes_and_edges_to_network函数中根据节点的属性比如你可以给所有“人物”实体一个颜色所有“技术”实体另一个颜色来设置node[color]属性。7.2 导出数据以供他用有时你需要的不是可视化而是图谱数据本身用于进一步的分析比如用 Gephi 做更复杂的网络分析或导入数据库。项目在运行时会自动生成一个与 HTML 同名的.json文件如knowledge_graph.json。这个 JSON 文件结构清晰包含了所有节点、边含类型、以及图的统计信息。你可以用 Python 的json库轻松加载它import json import networkx as nx with open(industrial-revolution-kg.json, r) as f: kg_data json.load(f) # 访问节点和边 nodes kg_data[nodes] # 列表每个元素是节点信息字典 edges kg_data[edges] # 列表每个元素是边信息字典包含source, target, label, type等 # 可以用networkx重新构建图 G nx.DiGraph() for node in nodes: G.add_node(node[id], labelnode[label], groupnode.get(group)) for edge in edges: G.add_edge(edge[source], edge[target], labeledge[label], typeedge[type]) # 现在你可以进行任何图分析了 print(f网络密度: {nx.density(G)}) print(f平均最短路径长度: {nx.average_shortest_path_length(G)})8. 常见问题排查与性能优化实战录在实际使用中你肯定会遇到各种问题。下面是我踩过的一些坑和解决方案。8.1 问题排查清单问题现象可能原因排查步骤与解决方案运行后无输出或立即退出1. 依赖未正确安装。2. 配置文件路径错误或格式不对。3. Python 版本过低。1. 确认虚拟环境已激活用pip list或uv pip list检查核心包openai, networkx, pyvis是否存在。2. 检查config.toml文件是否存在且是有效的 TOML 格式可以用在线校验器。3. 运行python --version确认版本 ≥ 3.11。卡在 “Processing chunk 1/XX” 长时间不动1. LLM API 无法连接或超时。2. 模型名称错误。3. 本地 Ollama 模型未下载。1. 检查base_url和api_key。对于本地 Ollama在浏览器访问http://localhost:11434/api/tags看是否返回模型列表。2. 确认model名称与 API 提供商支持的完全一致大小写敏感。3. 对于 Ollama运行ollama list确认模型已存在否则用ollama pull model-name拉取。控制台报错JSONDecodeErrorLLM 的回复不符合预期的 JSON 格式。1. 使用--debug参数运行查看 LLM 返回的原始文本。通常是因为提示词被模型误解或模型“说”了多余的话。2. 尝试降低temperature到 0.1 或 0增加输出的确定性。3. 如果使用小参数模型如 1B, 2B它们遵循指令的能力较弱建议换用更大或更擅长指令跟随的模型如qwen2.5:7b,llama3.2:3b。生成的图谱节点过多关系杂乱1. 分块太小导致提取过于碎片化。2. 实体标准化未生效或效果差。3. 原始文本质量差噪声多。1. 增大chunk_size让 LLM 在更完整的语境下工作。2. 确保standardization.enabled true。对于复杂文档尝试开启use_llm_for_entities。3. 预处理输入文本去除无关的列表、广告、版权声明等非主体内容。图谱过于稀疏社区间无连接1. 关系推理功能未启用或效果不佳。2. 文档本身主题分散关联性弱。1. 确保inference.enabled true。尝试开启use_llm_for_inference让 LLM 进行跨社区推理。2. 检查apply_transitive是否开启它能基于现有关系推导出新关系。3. 这有时不是工具问题而是文档特性的真实反映。HTML 文件打开空白或样式错乱1. PyVis 生成的 HTML 需要网络加载 Vis.js 库。2. 浏览器安全策略阻止加载本地资源。1.这是最常见原因。PyVis 默认从 CDN 加载 Vis.js。确保生成图谱的电脑在打开 HTML 时有网络连接。如果必须离线使用需要修改模板将 Vis.js 库本地化这需要修改templates/graph_template.html。处理速度非常慢1. 使用云端 API网络延迟高。2. 文档过长分块太多。3. 启用了 LLM 辅助的标准化和推理。1. 考虑使用本地模型以消除网络延迟。2. 适当增大chunk_size以减少总块数但注意不能超过模型上下文。3. 对于初步探索可以先关闭use_llm_for_entities和use_llm_for_inference它们是最耗时的步骤。8.2 性能与成本优化技巧分层处理策略对于超长文档不要追求一步到位。可以先以较大的chunk_size如 300和关闭高级功能快速跑一遍得到一个概览图谱。然后针对你感兴趣的子图社区对应的原文段落再用更小的分块和开启 LLM 推理进行精细提取。这就像先看地图找区域再拿放大镜细看。模型选型精度和速度/成本需要权衡。gpt-4提取最准但贵且慢gpt-3.5-turbo性价比高本地模型如qwen2.5:7b或llama3.2:3b在指令跟随上已经相当不错且零成本。多试几个找到适合你任务和预算的“甜点”模型。缓存中间结果项目目前每次运行都会重新调用 LLM。如果你需要反复调整可视化参数或推理设置可以修改代码将第一阶段提取出的原始三元组保存下来。这样后续调整时可以直接从这些三元组开始跳过昂贵的 LLM 提取步骤。并行处理项目是顺序处理每个文本块的。理论上如果 API 允许注意速率限制可以将文本块列表并发地发送给 LLM能大幅缩短总时间。但这需要修改llm.py中的调用逻辑加入异步或线程池处理。这个项目为我打开了一扇新的大门让我意识到 LLM 不仅仅是聊天和写作的工具更能成为我们理解和结构化复杂信息的强大助手。将非结构化的文本转化为可视化的知识网络这一过程本身就能激发新的洞察和连接。当然它不是一个全自动的魔法黑盒输出的质量很大程度上依赖于输入文本的清晰度、提示词的引导以及合理的参数配置。把它当作一个需要你与之协作的“思考伙伴”而不是一个替代你思考的“答案机器”你就能从它那里获得最大的价值。最后一个小建议定期关注项目的 GitHub 页面开源社区的力量常常会带来意想不到的改进和新功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2580262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…