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

《AI大模型应知应会100篇》第65篇:基于大模型的文档问答系统实现

第65篇:基于大模型的文档问答系统实现

📚 摘要:本文详解如何构建一个基于大语言模型(LLM)的文档问答系统,支持用户上传 PDF 或 Word 文档,并根据其内容进行智能问答。从文档解析、向量化、存储到检索与生成回答,手把手带你搭建完整流程。文末提供实战代码与部署指南,适合 AI 初中级开发者学习和参考。


在这里插入图片描述

一、系统架构设计概览

构建一个完整的文档问答系统,通常包括以下几个核心模块:

用户上传文档 → 文档解析 → 文本预处理 → 向量化 → 存储到向量数据库
→ 用户提问 → 检索相关段落 → 结合 LLM 生成答案 → 返回结果

我们将其拆解为五个主要步骤:

  1. 文档解析:将 PDF/Word 转换为纯文本;
  2. 文本分割与向量化:使用 LangChain 分割文本并用嵌入模型编码;
  3. 向量存储与检索:使用 Pinecone 存储向量并执行相似度搜索;
  4. 问答生成引擎:结合检索结果,调用大模型生成自然语言答案;
  5. 前后端整合:使用 FastAPI 构建后端接口 + Streamlit 实现前端交互。

二、文档预处理与向量化【实战部分】

1. 安装依赖

pip install PyPDF2 python-docx langchain openai sentence-transformers pinecone-client fastapi uvicorn streamlit

2. 解析 PDF 和 Word 文件

import PyPDF2
from docx import Documentdef read_pdf(file_path):with open(file_path, 'rb') as f:reader = PyPDF2.PdfReader(f)text = ''for page in reader.pages:text += page.extract_text()return textdef read_docx(file_path):doc = Document(file_path)full_text = [p.text for p in doc.paragraphs]return '\n'.join(full_text)

3. 使用 LangChain 进行文本分割

from langchain.text_splitter import RecursiveCharacterTextSplittertext_splitter = RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=100
)chunks = text_splitter.split_text(document_text)  # document_text 是上一步读取的文本

4. 使用 OpenAI 或 Sentence Transformers 生成嵌入

✅ OpenAI 嵌入方式(需 API Key)
from langchain.embeddings.openai import OpenAIEmbeddingsembeddings = OpenAIEmbeddings(openai_api_key="YOUR_OPENAI_API_KEY")
vectorized_chunks = embeddings.embed_documents(chunks)
✅ 本地 Sentence Transformer 嵌入方式(无需网络)
from sentence_transformers import SentenceTransformermodel = SentenceTransformer('all-MiniLM-L6-v2')
vectorized_chunks = model.encode(chunks)

三、向量存储与检索【实战部分】

我们以 Pinecone 为例来展示向量存储和检索过程。

1. 初始化 Pinecone

pip install pinecone-client
import pineconepinecone.init(api_key="YOUR_PINECONE_API_KEY", environment="us-west1-gcp")
index_name = "document-qa-index"if index_name not in pinecone.list_indexes():pinecone.create_index(name=index_name, dimension=1536)  # OpenAI 默认维度index = pinecone.Index(index_name)

2. 将向量写入 Pinecone

from uuid import uuid4vectors = [(str(uuid4()), vector, {"text": chunk}) for chunk, vector in zip(chunks, vectorized_chunks)]
index.upsert(vectors=vectors)

3. 执行语义检索(Top-K)

query = "什么是量子计算?"
query_vector = embeddings.embed_query(query)  # 如果是 OpenAI 嵌入
# query_vector = model.encode([query])[0]  # 如果是 Sentence Transformerresult = index.query(queries=[query_vector], top_k=3, include_metadata=True)
print(result)

输出示例:

{"matches": [{"id": "abc123","score": 0.89,"metadata": {"text": "量子计算是一种利用量子比特进行信息处理的技术..."}},...]
}

四、问答生成引擎【实战部分】

1. 使用 LangChain + OpenAI 生成答案

from langchain.chat_models import ChatOpenAI
from langchain.prompts import PromptTemplatellm = ChatOpenAI(model_name='gpt-3.5-turbo', openai_api_key="YOUR_OPENAI_API_KEY")prompt_template = """
你是一个基于以下上下文回答问题的助手。
请根据提供的上下文信息,给出简洁准确的回答。Context: {context}Question: {question}Answer:
"""prompt = PromptTemplate.from_template(prompt_template)# 整理检索结果中的 context
context = "\n".join([match['metadata']['text'] for match in result['matches']])
final_prompt = prompt.format(context=context, question=query)answer = llm.predict(final_prompt)
print(answer)

2. 多轮对话记忆机制(可选)

from langchain.memory import ConversationBufferMemorymemory = ConversationBufferMemory(memory_key="chat_history", input_key="question")
conversation = ConversationalRetrievalChain.from_llm(llm, retriever=vectorstore.as_retriever(), memory=memory)response = conversation({"question": "量子比特是什么?"})
print(response["answer"])

五、前后端整合与部署

1. 使用 FastAPI 构建后端服务

# app.py
from fastapi import FastAPI, UploadFile, File
from pydantic import BaseModel
import osapp = FastAPI()@app.post("/upload")
async def upload_file(file: UploadFile = File(...)):file_location = f"uploads/{file.filename}"with open(file_location, "wb+") as file_object:file_object.write(file.file.read())# 解析文档 + 向量化 + 存入 Pinecone 的逻辑return {"filename": file.filename, "status": "processed"}class QuestionRequest(BaseModel):question: str@app.post("/ask")
async def answer_question(req: QuestionRequest):# 调用检索 + 生成答案逻辑return {"answer": generated_answer}

启动服务:

uvicorn app:app --reload

访问 http://localhost:8000/docs 查看 API 接口文档。

2. 使用 Streamlit 构建前端界面

# frontend.py
import streamlit as st
import requestsst.title("文档问答系统")uploaded_file = st.file_uploader("上传 PDF 或 Word 文件", type=["pdf", "docx"])
if uploaded_file:files = {"file": uploaded_file.getvalue()}res = requests.post("http://localhost:8000/upload", files=files)st.success(res.json()["filename"] + " 已上传并处理完成!")question = st.text_input("请输入你的问题:")
if question:payload = {"question": question}res = requests.post("http://localhost:8000/ask", json=payload)st.write("回答:", res.json()["answer"])

运行前端:

streamlit run frontend.py

六、实战案例研究

案例一:企业内部知识库问答系统

  • 场景:员工上传公司制度、产品手册等文档,快速查找政策或技术细节;
  • 技术点:多文档上传、交叉检索、权限控制;
  • 扩展:集成 Slack / 钉钉机器人自动推送答案。

案例二:教育领域课程资料问答平台

  • 场景:学生上传讲义、笔记,提出课程相关问题,系统自动生成解答;
  • 技术点:OCR 支持扫描版 PDF、多语言识别、错题记录;
  • 扩展:支持视频字幕提取 + 知识图谱构建。

七、总结与扩展建议

当前系统优势:

  • 支持多种文档格式上传;
  • 基于语义检索 + 大模型生成,答案更准确;
  • 易于部署,前后端分离,便于扩展。

可扩展方向:

  1. 多文档交叉检索:允许多个文档同时参与检索,提升准确性;
  2. 多语言支持:使用 multilingual transformers 增加中文/日文/韩文等支持;
  3. OCR 集成:对扫描 PDF 使用 Tesseract OCR 提取文字;
  4. 知识图谱构建:将文档结构化为实体关系图,增强推理能力;
  5. 私有化部署:使用本地大模型(如 Qwen、ChatGLM)替代 OpenAI;
  6. 性能优化:使用 FAISS 替代 Pinecone 实现本地向量检索。

📌 附录:推荐工具与资源

功能推荐工具
文档解析PyPDF2, python-docx
文本分割LangChain
向量化OpenAI Embeddings, Sentence Transformers
向量数据库Pinecone, Milvus, FAISS
大模型问答OpenAI GPT, HuggingFace Transformers
后端框架FastAPI
前端界面Streamlit, React

📌 结语:本文从零开始讲解了如何构建一个完整的文档问答系统,涵盖数据处理、向量化、检索与生成等多个环节,并提供了实战代码与部署方案。希望你能通过本篇文章掌握这一关键技术,打造属于自己的智能问答助手!

如果你喜欢这篇文章,欢迎点赞、收藏、转发,也欢迎关注我的专栏《AI大模型应知应会100篇》持续更新中 👇


如有疑问或需要定制开发,请留言或私信我,我们将持续为你提供高质量的人工智能内容。

相关文章:

《AI大模型应知应会100篇》第65篇:基于大模型的文档问答系统实现

第65篇:基于大模型的文档问答系统实现 📚 摘要:本文详解如何构建一个基于大语言模型(LLM)的文档问答系统,支持用户上传 PDF 或 Word 文档,并根据其内容进行智能问答。从文档解析、向量化、存储到…...

P1439 【模板】最长公共子序列

P1439 【模板】最长公共子序列 - 洛谷 题目描述 给出1, 2, …, n的两个排列P1​和P2​,求它们的最长公共子序列。 输入格式 第一行是一个数n。 接下来两行,每行为n个数,为自然数1, 2, …, n的一个排列。 输出格式 一个数,即…...

LLaMA-Factory:环境准备

一、硬件和系统 操作系统: Ubuntu 24.04.2 LTS(64位)GPU: NVIDIA RTX 4090 笔记本 GPU,16GB显存CPU: 建议高性能多核 CPU(如 Intel i7/i9 或 AMD Ryzen 7/9)以支持数据预处理,我的是32核。RAM: 至少 32GB&…...

polarctf-web-[rce1]

考点: (1)RCE(exec函数) (2)空格绕过 (3)执行函数(exec函数) (4)闭合(ping命令闭合) 题目来源:Polarctf-web-[rce1] 解题: 这段代码实现了一个简单的 Ping 测试工具,用户可以通过表单提交一个 IP 地址,服务器会执…...

AI实践用例---日程规划(通用日程管理文件ICS)灵感踩坑日常

我是一位践行独立开发者之路的菜鸟开发者。 由于执行力较差,常常有很多想法但是很多时候没有去践行。 所以我有了让大模型为我生成日程安排的想法,这确实可以,很简单。只需要将你的想法告诉ai就行了。 例如: 发给AI的提示词: 我想你帮我对,嗯,未来的一年做一个嗯,大…...

MySQL 8.0 OCP 1Z0-908 121-130题

Q121.Examine these statements and output: mysql> GRANT PROXY ON accountinglocalhost TO ’ ‘ ‘%’; mysql> SELECT USER(), CURRENT_USER(), proxy_user; --------------------------------------------------------- |USER() | CURRENT_USER() | proxy_user I | …...

InfluxDB 2.7 连续查询实战指南:Task 替代方案详解

InfluxDB 2.7 引入了 Task 功能,作为连续查询(CQ)的现代替代方案。本文详细介绍了如何使用 Task 实现传统 CQ 的功能,包括语法解析、示例代码、参数对比以及典型应用场景。通过实际案例和最佳实践,帮助开发者高效迁移并…...

计算机网络 : Socket编程

计算机网络 : Socket编程 目录 计算机网络 : Socket编程引言1.UDP网络编程1.1 网络地址与端口转换函数1.2 本地环回1.3 EchoServer1.4 DictServer1.5 DictServer封装版1.6 简单聊天室 2.TCP网络编程2.1 TCP Socket API详解2.2 Echo Server2.3 Echo Serve…...

C++动态内存分配

内存管理 1.代码段(Code Segment / Text Segment)常量区2. 数据段(Data Segment)静态区3. BSS 段(未初始化数据段)4. 堆(Heap)5. 栈(Stack)6. 内存映射段&…...

git版本控制学习

1.环境搭配 2.Linux常用指令 cd:更改目录cd..回到上一级目录pow:显示当前所在的目录路径li(||):列出当前目录所有文件,只不过||例出的内容更为详细touch:新建一个文件夹如touch index.js就会在当前目录下新建一个index.js文件rm:删除一个文件,rm index.js 就会把in…...

在MYSQL中导入cookbook.sql文件

参考资料: GitHub 项目:svetasmirnova/mysqlcookbook CSDN 博客:https://blog.csdn.net/u011868279/category_11645577.html 建库: mysql> use mysql Reading table information for completion of table and column names …...

安科瑞AcrelEMS3.0企业微电网智慧能源平台-安科瑞 蒋静

1、平台介绍 Acrel-EMS3.0 智慧能源平台是针对企业微电网的能效管理平台,满足江苏省《新型电力负荷管理系统数据接入规范》的技术架构,可通过云云互联方式接受电力平台的调度指令和策略下发,支持作为微网调度子系统或子平台。 2、解决方案 …...

5G-A和未来6G技术下的操作系统与移动设备变革:云端化与轻量化的发展趋势

目录 5G技术带来的革命性变革 云端化操作系统的实现路径 完全云端化模式 过渡性解决方案 未来操作系统的发展方向 功能架构演进 安全机制强化 移动设备的形态变革 终端设备轻量化 物联网设备简化 实施挑战与应对策略 技术挑战 商业模式创新 总结与展望 5G技术作为…...

TensorFlow/Keras实现知识蒸馏案例

创建一个“教师”模型(一个稍微复杂点的网络)。创建一个“学生”模型(一个更简单的网络)。使用“软标签”(教师模型的输出概率)和“硬标签”(真实标签)来训练学生模型。 import tens…...

能源数字化转型关键引擎:Profinet转Modbus TCP网关驱动设备协同升级

在工业自动化的世界中,ModbusTCP和Profinet是两个非常重要的通讯协议。ModbusTCP以其开放性和易用性,被广泛应用于各种工业设备中;而Profinet则以其高效性和实时性,成为了众多高端设备的首选。然而,由于这两种协议的差…...

大模型的实践应用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+传统算法的旅游行程规划系统

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+传统算法的旅游行程规划系统。本报告将阐述基于大模型Qwen3(32B)、LangChain框架、MCP协议、RAG技术以及传统算法构建的智能旅游行程规划系统。该系统通过整合多种技术优势,实…...

【Unity】用事件广播的方式实现游戏暂停,简单且实用!

1.前言 在做Unity项目的时候,要考虑到“游戏暂停”的功能,最直接的办法是修改游戏的Time.TimeScale 0f。但是这种方式的影响也比较大,因为它会导致游戏中很多程序无法正常运行。 于是我就有了一个想法,在游戏中想要暂停的对象&…...

二维数组以及C99中的变长数组(如何在VS2022中使用苹果的clang编译器)

一、二维数组的创建 1.1 二维数组的概念 在上一篇文章中所写的称为一维数组,数组的元素都是内置类型的,如果我们把一维数组作为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组被称为三维数组,二维数组以…...

影楼精修-肤色统一算法解析

注意:本文样例图片为了避免侵权,均使用AIGC生成; 本文介绍影楼精修中肤色统一算法的实现方案,并以像素蛋糕为例,进行分析说明。 肤色统一就是将人像照片中皮肤区域的颜色进行统一,看起来颜色均匀一致&…...

mac的Cli为什么输入python3才有用python --version显示无效,pyenv入门笔记,如何查看mac自带的标准库模块

根据你的终端输出,可以得出以下结论: 1. 你的 Mac 当前只有一个 Python 版本 系统默认的 Python 3 位于 /usr/bin/python3(这是 macOS 自带的 Python)通过 which python3 确认当前使用的就是系统自带的 Pythonbrew list python …...

城市内涝监测预警系统守护城市安全

一、系统背景 城市内涝是指由于强降水或连续性降水超过城市排水能力,导致城市内产生积水灾害的现象。随着气候变化和城市化进程的加快,城市内涝现象愈发频繁和严重。传统的城市排水系统已难以满足当前的城市排水需求,特别是在暴雨等极端天气条…...

ThinkPad X250电池换电池芯(理论技术储备)

参考:笔记本电池换电芯的经验与心得分享 - 经典ThinkPad专区 - 专门网 换电池芯,需要克服以下问题: 1 拆电池。由于是超声波焊接,拆解比较费力,如果暴力撬,有可能导致电池壳变形... 2 替换电池芯的时候如…...

2025第三届盘古初赛(计算机部分)

前言 比赛的时候时间不对,打一会干一会,导致比赛时候思路都跟不上,赛后简单复现一下,希望大家批批一下 计算机取证 1、分析贾韦码计算机检材,计算机系统Build版本为?【标准格式:19000】 183…...

qtc++ qdebug日志生成

本文介绍了将qdebug注册到日志系统,这样qdebug打印的信息将记录在日志文本文件,方便观看程序运行中的历史信息,但是需要注意的是,注册后qdebug的信息将不会打印在qtcreator的输出中,所以作者建议,在开发的时…...

Tomcat 配置 HTTPS 访问全攻略(CentOS 环境)

Tomcat 配置 HTTPS 访问全攻略(CentOS 环境) 一、环境说明 操作系统:CentOS Tomcat 版本:Apache Tomcat/9.0.105 服务器 IP:192.168.1.35 目标:将 Tomcat 默认的 HTTP 访问升级为 HTTPS,提…...

20250516使用TF卡将NanoPi NEO core开发板出厂的Ubuntu core22.04.3系统降级到Ubuntu core16.04.2

20250516使用TF卡将NanoPi NEO core开发板出厂的Ubuntu core22.04.3系统降级到Ubuntu core16.04.2 2025/5/16 10:58 缘起:NanoPi NEO core核心板出厂预制的OS操作系统为Ubuntu core22.04.3系统。 【虽然是友善之臂提供的最新的系统,但是缺少很多用用程序…...

针对大事务问题对业务存储过程改造

针对大事务问题对业务存储过程改造 一、问题描述 1. 问题现象 业务调用存储过程没有成功,发现存在大事务,单独拿出来执行发现问题。 greatsql> INSERT INTOywdb1.t1(TIMEKEY,zbbh,zcbl,zcblms,zjzh,zjzhms,cbzh,ljzjzh,xmbh,xmmc,sfgj,dd,ddsm,cb…...

如何解决Move to iOS 不起作用的问题?

iPhone 16系列已经上市有一段时间了。你已经把旧的 Android 手机换成了 iPhone 16 了吗?然而,当您兴奋地准备传输数据时,您发现 Move to iOS 无法正常工作。这确实令人沮丧。但不用担心,因为我们找到了 9 个有效的解决方案&#x…...

npm cross-env工具包介绍(跨平台环境变量设置工具)

文章目录 cross-env:跨平台环境变量设置工具什么是cross-env?为什么需要cross-env?平台差异带来的问题 cross-env的工作原理核心功能技术实现 安装与基本使用安装步骤基本使用方法运行效果 高级使用技巧设置多个环境变量环境变量传递与链式命…...

分布式锁: Redis和ZooKeeper两种分布式锁对比

在分布式系统中,分布式锁是协调多节点共享资源访问的核心机制。Redis 和 ZooKeeper 是两种常用的分布式锁实现方案,但两者的设计理念、适用场景和优缺点存在显著差异。本文将从 一致性模型、性能、可靠性、实现原理 等维度进行对比,并提供技术…...

笔试强训:Day5

一、笨小猴&#xff08;哈希数学&#xff09; 笨小猴_牛客题霸_牛客网 #include <iostream> #include <cmath> using namespace std; string s; bool isprime(int x){//试除法if(x2) return true;if(x<2||x%20) return false;int nsqrt(x);for(int i3;i<n;i…...

Flask框架搭建

1、安装Flask 打开终端运行以下命令&#xff1a; pip install Flask 2、创建项目目录 在Windows上&#xff1a; venv\Scripts\activate 执行 3、创建 app.py 文件 可以在windows终端上创建app.py文件 &#xff08;1&#xff09;终端中创建 使用echo命令 echo "fr…...

【Kubernetes】单Master集群部署(第二篇)

目录 前言 一、实验环境 二、操作系统初始化配置 三、部署 docker引擎 四、部署 etcd 集群 4.1 准备签发证书环境 4.2 准备cfssl证书生成工具 4.3 生成Etcd证书 4.4 启动etcd服务 4.5 检查群集状态 五、部署 Master 组件 5.1 准备软件包 5.2 创建用于生成CA证书、…...

JavaScript性能优化实战(10):前端框架性能优化深度解析

引言 React、Vue、Angular等框架虽然提供了强大的抽象和开发效率,但不恰当的使用方式会导致严重的性能问题,针对这些问题,本文将深入探讨前端框架性能优化的核心技术和最佳实践。 React性能优化核心技术 React通过虚拟DOM和高效的渲染机制提供了出色的性能,但当应用规模…...

vue3中预览Excel文件

1.前言 有时候项目中需要预览Excel文件&#xff0c;特别是对于.xls格式的Excel文件许多插件都不支持&#xff0c;经过尝试&#xff0c;最终有三种方案可以实现.xlsx和.xls格式的Excel文件的预览&#xff0c;各有优缺点 2.luckyexcel插件 2.1说明 该插件优点在于能保留源文件…...

VsCode和AI的前端使用体验:分别使用了Copilot、通义灵码、iflyCode和Trae

1、前言 大杂烩~每次开发一行代码&#xff0c;各个AI争先恐后抢着提供帮助 备注&#xff1a;四款插件都需要先去官网注册账号&#xff0c;安装好之后有个账号验证。 2、插件详解 2.1、AI分析的答案 GitHub Copilot 定位&#xff1a;老牌 AI 代码补全工具&#xff0c;深度集成…...

【问题排查】easyexcel日志打印Empty row!

问题原因 日志打印​​I/O 操作开销​&#xff08;如 Log4j 的 FileAppender&#xff09;会阻塞业务线程&#xff0c;直到日志写入完成&#xff0c;导致接口响应变慢 问题描述 在线上环境&#xff0c;客户反馈导入一个不到1MB的excel文件&#xff0c;耗时将近5分钟。 问题排…...

若依框架SpringBoot从Mysql替换集成人大金仓(KingBase)数据库

一、安装人大金仓数据库 1、下载 前往人大金仓数据库下载自己想要的版本&#xff08;建议下载Mysql兼容版&#xff09;人大金仓官网&#xff0c;点击服务与支持&#xff0c;点击安装包下载 点击软件版本&#xff0c;选择数据库 选择合适的版本&#xff0c;点击下载&#xff0…...

Graph Representation Learning【图最短路径优化/Node2vec/Deepwalk】

文章目录 Q1&#xff1a;网络性质&#xff1a;1.数据读取与邻接表构建&#xff1a;2.基本特征和连通性&#xff1a; 算法思路&#xff1a;1. 广度优先搜索&#xff08;BFS&#xff09;标记前驱:2. 回溯生成所有最短路径: 实验结果&#xff1a;复杂度分析&#xff1a; Q2&#x…...

ZYNQ Overlay硬件库使用指南:用Python玩转FPGA加速

在传统的FPGA开发中,硬件设计需要掌握Verilog/VHDL等硬件描述语言,这对软件开发者而言门槛较高。Xilinx的PYNQ框架通过Overlay硬件库彻底改变了这一现状——开发者只需调用Python API即可控制FPGA的硬件模块,实现硬件加速与灵活配置。本文将深入探讨ZYNQ Overlay的核心概念、…...

Git基础使用方法与命令总结

Git 是一个分布式版本控制系统&#xff0c;用于跟踪代码或文件的修改历史。以下是 Git 的基础使用方法和常用命令&#xff0c;适合快速上手&#xff1a; 1. 安装与配置 安装 Git 下载地址&#xff1a;https://git-scm.com/downloads&#xff08;支持 Windows/macOS/Linux&…...

rust语言,与c,go语言一样也是编译成二进制文件吗?

是的&#xff0c;Rust 和 C、Go 一样&#xff0c;默认情况下会将代码编译成二进制可执行文件&#xff08;如 ELF、PE、Mach-O 等格式&#xff09;&#xff0c;但它们的编译过程和运行时特性有所不同&#xff1a; 1. Rust&#xff08;类似 C&#xff0c;直接编译为机器码&#x…...

从银行排队到零钱支付:用“钱包经济学”重构Java缓存认知

"当你的系统还在频繁访问数据库银行时&#xff0c;聪明的开发者早已学会用钱包零钱策略实现毫秒级响应——本文将用理财思维拆解缓存设计精髓&#xff0c;教你如何让代码学会小额快付的架构艺术。" 【缓存】作为程序员必须理解的概念之一&#xff0c;让我们用 ‌「钱…...

Json rpc 2.0比起传统Json在通信中的优势

JSON-RPC 2.0 相较于直接使用传统 JSON 进行通信&#xff0c;在协议规范性、开发效率、通信性能等方面具有显著优势。以下是核心差异点及技术价值分析&#xff1a; 一、结构化通信协议&#xff0c;降低开发成本 传统 JSON 通信需要开发者自定义数据结构和处理逻辑&#xff0c;…...

无缝部署您的应用程序:将 Jenkins Pipelines 与 ArgoCD 集成

在 DevOps 领域&#xff0c;自动化是主要目标之一。这包括自动化软件部署方式。与其依赖某人在部署软件的机器上进行 rsync/FTP/编写软件&#xff0c;不如使用 CI/CD 的概念。 CI&#xff0c;即持续集成&#xff0c;是通过代码提交创建工件的步骤。这可以是 Docker 镜像&#…...

网络安全-等级保护(等保) 2-5-1 GB/T 25070—2019 附录B (资料性附录)第三级系统安全保护环境设计示例

################################################################################ 文档标记说明&#xff1a; 淡蓝色&#xff1a;时间顺序标记。 橙色&#xff1a;为网络安全标准要点。 引用斜体&#xff1a;为非本文件内容&#xff0c;个人注解说明。 加粗标记&#xff1a…...

精准掌控张力动态,重构卷对卷工艺设计

一、MapleSim Web Handling Library仿真和虚拟调试解决方案 在柔性材料加工领域&#xff0c;卷对卷&#xff08;Roll-to-Roll&#xff09;工艺的效率与质量直接决定了产品竞争力。如何在高动态生产场景中实现张力稳定、减少断裂风险、优化加工速度&#xff0c;是行业长期面临的…...

怎么使用python进行PostgreSQL 数据库连接?

使用Python连接PostgreSQL数据库 在Python中连接PostgreSQL数据库&#xff0c;最常用的库是psycopg2。以下是详细的使用指南&#xff1a; 安装psycopg2 首先需要安装psycopg2库&#xff1a; pip install psycopg2 # 或者使用二进制版本&#xff08;安装更快&#xff09; pi…...

SQL Server权限设置的几种方法

SQL Server 的权限设置是数据库安全管理的核心&#xff0c;正确配置权限可以有效防止数据泄露、误操作和恶意篡改。下面详细介绍 SQL Server 权限设置的方法&#xff0c;涵盖从登录名创建到用户授权的完整流程。 一、权限设置的基本概念 SQL Server 的权限体系主要包括以下几…...

Neo4j(一) - Neo4j安装教程(Windows)

文章目录 前言一、JDK与Neo4j版本对应关系二、JDK11安装及配置1. JDK11下载2. 解压3. 配置环境变量3.1 打开系统属性设置3.2 新建系统环境变量3.3 编辑 PATH 环境变量3.4 验证环境变量是否配置成功 三、Neo4j安装&#xff08;Windows&#xff09;1. 下载并解压Neo4j安装包1.1 下…...