基于Ollama与LangChain的本地PDF智能问答系统搭建指南

news2026/5/4 4:35:44
1. 项目概述当本地大模型遇上你的PDF知识库最近在折腾本地大模型应用的朋友估计都绕不开一个核心需求怎么让我自己的文档比如一堆PDF报告、研究论文或者产品手册能被我的本地大模型“读懂”并灵活问答这就是典型的RAG检索增强生成场景。今天要拆解的这个项目tonykipkemboi/ollama_pdf_rag就是一个非常典型的、开箱即用的解决方案。它巧妙地串联起了几个当下最热门的开源工具用Ollama来部署和运行本地大语言模型用LangChain来搭建RAG的处理流水线再配上Chroma这个轻量级向量数据库目标就是让你能快速在本地搭建一个属于你自己的、基于PDF文档的智能问答系统。简单来说这个项目就是一个“粘合剂”和“脚手架”。它没有去重复造轮子而是把几个ాలు强大的轮子Ollama, LangChain, Chroma用代码“粘”在了一起定义好了从PDF上传、文本分割、向量化存储到问题检索、提示词组装、最终由大模型生成答案的完整流程。你不需要从零开始研究LangChain的复杂接口或者纠结ChromaDB该怎么集成这个项目已经提供了一个清晰的实现范例。对于想快速验证RAG想法、学习现代AI应用架构或者需要为内部文档构建一个安全、离线的问答助手的开发者来说这是一个极佳的起点。它的核心价值在于“整合”与“演示”。通过阅读和运行它的代码你能迅速理解一个生产级RAG系统的主要模块是如何协同工作的。你会看到如何处理不同格式的PDF特别是那些有复杂排版和表格的如何选择文本分割策略以平衡上下文完整性以及如何设计检索和生成的提示词来提升答案的准确性。接下来我们就深入这个项目的内部看看它是如何一步步实现“赋予PDF对话能力”这个目标的。2. 核心架构与工具链解析要理解ollama_pdf_rag我们必须先把它依赖的核心工具链拆开看明白。这就像一个精密的仪器每个部件都有其不可替代的作用。2.1 Ollama本地大模型的“发动机”项目的核心生成能力来源于Ollama。Ollama是一个用于在本地运行、管理和服务大型语言模型的工具。它简化了模型下载、加载和通过API暴露的整个过程。你只需要一行命令如ollama run llama3.2就能在本地启动一个Llama 3.2模型的API服务。在这个项目中Ollama扮演了“大脑”的角色。LangChain通过调用Ollama提供的API端点通常是http://localhost:11434将组装好的提示词包含检索到的文档片段和用户问题发送过去并接收模型生成的文本回答。选择Ollama的优势非常明显完全离线所有数据你的PDF内容和模型参数都在本地无需担心 forwarding敏感信息。模型丰富支持Llama 3、Mistral、Gemma等众多开源模型你可以根据对速度、精度和硬件的要求灵活选择。资源可控你可以选择参数量较小的模型如7B参数在消费级GPU甚至纯CPU上运行门槛大大降低。注意模型的选择直接影响最终效果和速度。例如使用llama3.2:3b这样的微型模型虽然响应快但复杂逻辑处理和长文本理解能力会较弱而llama3.2:11b或mistral:7b则能提供更可靠的结果但需要更强的计算资源建议至少有8GB以上显存。2.2 LangChainAI应用的“流水线工”LangChain是一个用于开发由语言模型驱动的应用程序的框架。它的核心思想是“链”Chain即将多个处理步骤如读取文档、分割文本、向量化、检索、生成连接成一个可执行的工作流。在ollama_pdf_rag项目中LangChain的作用是编排整个RAG流程。我们来看它具体组织了哪些关键组件文档加载器 (PyPDFLoader)负责读取你上传的PDF文件并将其中的文本内容提取出来。这里会遇到PDF解析的常见坑比如扫描件图片格式无法直接提取文字需要先做OCR。文本分割器 (RecursiveCharacterTextSplitter)一篇PDF可能长达数十页直接丢给模型是不现实的有上下文长度限制。分割器的作用就是将长文本切分成语义相对完整的小片段chunks。RecursiveCharacterTextSplitter是一种递归尝试不同分隔符如双换行、单换行、句号、空格的智能分割器能更好地保持段落或句子的完整性。嵌入模型 (OllamaEmbeddings)这是将文本转化为计算机能理解的“数学表示”即向量的关键。LangChain通过OllamaEmbeddings类调用Ollama服务中同样支持嵌入功能的模型如nomic-embed-text为每一个文本片段生成一个高维向量。语义相似的文本其向量在空间中的距离也更近。向量存储 (Chroma)用于存储上一步生成的所有文本向量并提供高效的相似性搜索功能。当用户提问时系统会将问题也转化为向量并在Chroma中查找与之最相似的几个文本片段。检索链 (RetrievalQA)这是LangChain提供的一个高层封装链。它内部自动完成了“检索相关文档 - 组装提示词 - 调用LLM生成答案”这一系列操作。开发者只需要配置好检索器连接Chroma和LLM连接Ollama它就能处理大部分标准问答场景。2.3 Chroma向量数据的“记忆仓库”Chroma是一个轻量级、开源且易于 forwarding的向量数据库。在这个项目中它持久化存储了所有PDF文本片段的向量及其原始文本。它的工作流程是在初始化阶段项目代码会将处理好的文本片段和对应的向量存入Chroma的一个“集合”Collection中。这个集合通常以PDF文件名或其他标识命名。当用户进行查询时系统用同样嵌入模型将问题向量化然后向Chroma发起查询“请找出和这个问句向量最相似的K个文本片段”。Chroma通过计算余弦相似度等度量快速返回最相关的结果。选择Chroma是因为它简单易用无需单独部署复杂的数据库服务可以嵌入到Python应用中非常适合原型开发和小型项目。它的数据默认持久化在本地目录如./chroma_db方便管理。2.4 项目架构全景图至此我们可以勾勒出这个项目的完整数据流摄入阶段用户上传PDF - PyPDFLoader提取文本 - RecursiveCharacterTextSplitter分割成片段 - OllamaEmbeddings为每个片段生成向量 - 向量和文本存入Chroma数据库。查询阶段用户输入问题 - OllamaEmbeddings将问题转化为向量 - 在Chroma中检索相似度最高的K个文本片段 - LangChain的RetrievalQA链将这些片段作为上下文与原始问题组装成最终提示词 - 通过API调用Ollama上的LLM - LLM生成基于上下文的答案并返回给用户。这个架构清晰地将“知识存储”Chroma与“推理生成”Ollama解耦使得系统可以独立地更新知识库或更换更强大的模型扩展性很好。3. 从零开始环境搭建与项目运行实操理解了原理我们动手把它跑起来。这里我会以一台干净的Linux/macOS系统Windows的WSL2环境类似为例带你走通全流程并指出每个步骤可能遇到的坑。3.1 基础环境准备首先确保你的系统有Python建议3.9以上版本和pip。然后我们从最核心的Ollama安装开始。步骤1安装并启动Ollama访问Ollama官网获取安装脚本。对于Linux/macOS通常是一行命令curl -fsSL https://ollama.com/install.sh | sh安装完成后启动Ollama服务。它默认会在后台运行并监听11434端口。ollama serve 接下来我们需要拉取一个LLM模型和一个嵌入模型。模型大小需根据你的硬件决定。以下是一个平衡性能和资源消耗的选择# 拉取一个用于生成答案的对话模型例如 Llama 3.2 的 7B版本 ollama pull llama3.2:7b # 拉取一个专门用于生成文本向量的嵌入模型至关重要 ollama pull nomic-embed-text实操心得nomic-embed-text是目前在MTEB等基准测试上表现优异的开源嵌入模型比早期一些模型效果要好很多强烈推荐使用。如果只拉取对话模型后续创建向量库时会报错因为默认的嵌入模型可能不存在。步骤2获取项目代码并安装Python依赖克隆项目仓库并进入目录git clone https://github.com/tonykipkemboi/ollama_pdf_rag.git cd ollama_pdf_rag项目根目录下应该有一个requirements.txt文件。创建虚拟环境并安装依赖是避免包冲突的好习惯python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt关键依赖包括langchain,chromadb,pypdf,langchain-community等。如果安装缓慢可以考虑更换pip源。3.2 核心代码文件解读与运行项目结构通常比较简洁。我们重点关注两个核心Python文件ingest.py知识库摄入脚本。负责读取PDF、分割文本、生成向量并存储到Chroma。query.py或main.py问答交互脚本。加载已创建的向量库接受用户查询并返回答案。步骤3构建你的PDF知识库将你想要让模型“学习”的PDF文件放入项目目录比如一个docs/文件夹下。然后运行摄入脚本python ingest.py --pdf-dir ./docs你需要根据脚本的实际参数进行调整。例如有些实现可能需要你直接修改脚本中的PDF路径。运行这个脚本时你会看到控制台输出包括加载了哪些PDF、分割出了多少个文本片段等信息。关键细节与避坑PDF解析失败如果遇到PyPDF2或pypdf无法提取文本提示可能是加密文档或扫描件。对于扫描件你需要先使用OCR工具如Tesseract处理PDF生成可检索的文本层。这不是本项目的范畴但却是实际应用中常遇到的问题。文本分割参数在ingest.py中你会找到RecursiveCharacterTextSplitter的初始化代码关键参数是chunk_size每个片段的最大字符数和chunk_overlap相邻片段的重叠字符数。chunk_size通常设置为模型上下文窗口的一小部分例如1000chunk_overlap设置为150-200有助于避免在句子中间切断语义。你需要根据你的文档类型技术文档、小说、报告微调这些参数。向量库位置脚本运行后会在本地生成一个向量数据库目录如chroma_db/。请确保脚本有该目录的写入权限。步骤4启动问答交互摄入成功后就可以运行查询脚本了python query.py或者如果提供了Web界面如使用chainlit或streamlit则运行对应的UI脚本。chainlit run app.py -w在交互界面或命令行中输入你的问题例如“这份报告中提到的主要风险有哪些”系统就会从你摄入的PDF中寻找相关信息并生成答案。3.3 配置要点解析在运行过程中有几个配置点需要特别留意它们直接影响系统的效果嵌入模型配置在代码中初始化OllamaEmbeddings时需要指定model参数它必须与你用ollama pull下载的嵌入 forwarding名称一致例如modelnomic-embed-text。LLM模型配置初始化Ollama或ChatOllama类时同样需要指定model参数例如modelllama3.2:7b。此外temperature创造性通常问答设为0.1-0.3以获得更确定答案、num_predict最大生成长度等参数也在这里设置。检索器配置在创建RetrievalQA链时会传入一个检索器对象。你需要设置search_kwargs{k: 4}中的k值。这个k表示每次检索返回多少个相关文本片段。k太小可能信息不足k太大可能引入噪声并超出模型上下文窗口。一般从3-5开始尝试。一个典型的query.py核心代码段可能长这样from langchain_community.embeddings import OllamaEmbeddings from langchain_community.llms import Ollama from langchain_community.vectorstores import Chroma from langchain.chains import RetrievalQA # 1. 加载嵌入模型和LLM embeddings OllamaEmbeddings(modelnomic-embed-text) llm Ollama(modelllama3.2:7b, temperature0.1) # 2. 从磁盘加载之前创建的向量数据库 vectorstore Chroma( persist_directory./chroma_db, forwarding_functionembeddings ) # 3. 将向量数据库转为检索器并设置返回结果数量 retriever vectorstore.as_retriever(search_kwargs{k forwarding}) # 4. 创建问答链 qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, # 最常用的链类型将检索到的所有文档“堆叠”进提示词 retrieverretriever, return_source_documentsTrue # 可选返回源文档用于溯源 ) # 5. 进行查询 result qa_chain.invoke({query: 你的问题是什么}) print(result[result])4. 效果优化与高级技巧项目跑通只是第一步。要让这个RAG系统真正好用产生准确、可靠的答案还需要进行一系列优化。这部分是区分“玩具”和“工具”的关键。4.1 提升检索质量超越简单向量搜索默认的向量相似度检索有时会失灵特别是当用户问题与文档表述方式差异较大时。以下是几种提升策略多路检索Hybrid Search结合稠密向量检索即本项目目前使用的和稀疏词频检索如BM25。前者擅长语义匹配后者擅长关键词匹配。Chroma等数据库已支持混合检索。LangChain中可以尝试Chroma的as_retriever方法配合search_typemmr(最大边际相关性) 或使用EnsembleRetriever来组合多个检索器。检索后重排序Re-ranking先检索出较多的候选片段例如20个然后使用一个更精细的、专门用于重排序的模型如BAAI/bge-reranker-large对这些片段针对问题进行打分和重排最后只取Top-K个送入LLM。这能显著提升上下文相关性但会增加计算开销。这需要引入额外的重排序模型API或本地服务。元数据过滤在摄入PDF时可以为每个文本片段添加元数据如{“source”: “年度报告.pdf”, “page”: 5}。在检索时可以添加过滤器例如“只从‘用户手册.pdf’中检索”这在大规模知识库中非常有用。RecursiveCharacterTextSplitter可以设置add_start_indexTrue来帮助记录页码。4.2 优化提示工程让LLM更好地利用上下文检索到的文档片段只是原材料如何通过提示词让LLM用好它们是生成高质量答案的临门一脚。RetrievalQA默认使用的chain_typestuff是一种简单直接的方式但它容易受无关上下文干扰。使用refine或map_reduce链对于检索到的大量文档stuff方式可能超出上下文长度。map_reduce链先对每个片段单独生成答案map再汇总这些答案生成最终答案reduce。refine链则迭代地基于前一个答案和下一个文档片段来优化答案。它们更适合处理大量检索结果但速度更慢且可能丢失全局连贯性。自定义提示模板这是最重要的优化手段。不要使用默认的通用提示词。根据你的文档类型法律、医疗、技术和任务摘要、问答、对比设计专门的提示词。一个改进的提示词模板应包含明确的角色指令“你是一个专业的金融分析师基于以下上下文回答问题。”严格的答案约束“答案必须仅基于提供的上下文。如果上下文没有足够信息请明确说‘根据提供的信息无法回答’。”输出格式要求“请用分点列表的形式回答。”上下文标识清晰地将上下文和问题用标记如### 上下文 ###### 问题 ###分隔开。示例from langchain.prompts import PromptTemplate custom_prompt PromptTemplate( input_variables[context, question], template你是一个严谨的文档分析助手。请严格根据以下上下文信息来回答问题。如果上下文不包含答案请直接说“信息不足”不要编造。 上下文 {context} 问题{question} 基于上下文的答案 ) # 然后在创建RetrievalQA链时通过 chain_type_kwargs{prompt: custom_prompt} 传入。4.3 处理复杂PDF与长文本现实中的PDF往往比纯文本复杂。表格提取PyPDF对表格支持不好提取后格式混乱。可以考虑使用camelot-py、tabula-py或pdfplumber库专门提取表格数据并将其转换为Markdown或结构化文本描述如“下表显示了2023年各季度营收Q1: 100万, Q2: 150万...”再存入向量库。分章节处理对于书籍或长报告在分割文本前可以尝试用unstructured库进行更智能的文档分区识别出标题、章节并将章节信息作为元数据。这样在检索时可以优先检索同一章节的内容提升答案的连贯性。上下文窗口限制即使有重叠分割模型也可能丢失跨片段的全局信息。对于需要超长上下文理解的任务可以考虑使用支持超长上下文如128K的模型或者采用“摘要索引”的两级检索策略先为每个章节或大块生成摘要并建立向量索引用户提问时先定位到相关章节再在该章节的详细内容中做精细检索。5. 常见问题排查与实战心得在实际部署和调试过程中你几乎一定会遇到下面这些问题。这里我把踩过的坑和解决方案总结出来。5.1 安装与运行类问题问题现象可能原因解决方案运行ingest.py时报错No such file or directory: ‘./docs’脚本中指定的PDF目录路径不正确。检查ingest.py中pdf_dir变量的值或通过命令行参数正确指定你存放PDF的文件夹绝对路径。运行query.py时报Connection error连接Ollama失败。1. Ollama服务没有启动。2. 脚本中配置的Ollama API地址如http://localhost:11434不对。1. 在终端执行ollama serve并确保它持续运行。2. 检查代码中Ollama或OllamaEmbeddings初始化时base_url参数是否正确。摄入PDF时卡住或报嵌入模型错误。1. 没有下载嵌入模型。2. 下载的嵌入模型名称与代码中指定名称不匹配。1. 执行ollama pull nomic-embed-text。2. 核对代码中OllamaEmbeddings(model”…”)的模型名与用ollama list查看到的本地模型名是否完全一致。问答时LLM回复“我不知道”或胡言乱语与上下文无关。1. 检索到的上下文片段不相关。2. 提示词没有强制模型基于上下文回答。3. 向量数据库没有成功加载或为空。1. 检查检索步骤打印出retriever.get_relevant_documents(“你的问题”)的结果看返回的文本是否相关。如果不相关需优化分割策略或尝试混合检索。2. 使用上文提到的自定义提示模板加入强约束。3. 确认ingest.py成功运行并生成了chroma_db文件夹且query.py中persist_directory路径指向正确。5.2 效果与性能类问题回答不准确包含幻觉这是RAG系统最常见的问题。首先务必开启“返回源文档”功能。在每次得到答案时同时查看模型究竟参考了哪几段原文。如果原文本身就没有答案那模型幻想是必然的。如果原文有答案但模型没概括对那问题可能出在上下文过长或噪声大减少检索数量k或使用重排序筛选出最相关的1-2段。模型能力不足尝试换用更强的模型如llama3.2:11b或mistral:7b。提示词不佳强化提示词中的约束指令。处理速度慢摄入慢向量化嵌入是瓶颈。确保使用的是本地Ollama嵌入模型而非调用远程API。对于超大文档集考虑分批处理。查询慢检索本身很快慢在LLM生成。可以尝试量化版本的模型如llama3.2:7b-q4_0在几乎不损失精度的情况下大幅提升推理速度。在Ollama中拉取模型时就会自动下载合适的量化版本。如何更新知识库这是一个经典问题。简单的做法是删除整个chroma_db目录重新运行ingest.py摄入所有新旧PDF。更优雅的做法需要项目支持“增量更新”这涉及判断哪些文档是新的或已修改并只对这部分进行向量化然后以某种方式如按文档ID更新到Chroma集合中。这需要更复杂的工程设计通常需要维护一份文档的元数据记录如文件哈希值。5.3 个人实战心得从“玩具”到“工具”的转折点是引入源文档追溯。一定要让系统能够展示它做出回答的依据哪一页哪一段。这不仅能帮你调试更是建立用户信任的关键。在LangChain中设置return_source_documentsTrue就能轻松拿到这些信息。分割策略是地基。花时间研究你的文档特性。技术手册可能按章节分割更好对话记录按说话人分割通用文章用RecursiveCharacterTextSplitter默认参数可能就不错。一个坏的切分会毁掉后续所有步骤。不要忽视简单关键词。在尝试复杂的混合检索前可以先在检索后对结果做一个简单的关键词匹配过滤有时能立刻排除掉一些语义相关但主题不匹配的干扰项。硬件是硬道理。7B模型在16GB内存的MacBook上可以流畅运行但如果是11B或更大模型或者需要同时服务多个请求一块NVIDIA GPU哪怕是消费级的3060 12GB体验会好很多。Ollama对GPU的支持很好能自动利用CUDA加速。这个项目就像一副完整的骨架让你能立刻看到RAG系统的全貌。但它离一个健壮的生产系统还有距离比如缺乏用户界面虽然可以轻松集成Gradio或Chainlit、缺乏多轮对话记忆、缺乏更精细的权限管理和文档管理。然而它完美地达成了它的目标为你提供了一个绝佳的起点和清晰的学习范例。你可以基于它深入每一个环节进行定制和强化最终构建出完全符合自己业务需求的智能知识库系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2580529.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…