基于Transformer与PostgreSQL的向量检索实战:从原理到应用
在实际项目中大模型技术正从纯算法研究快速渗透到工程应用领域。许多开发者已经熟悉了Transformer架构的理论但在将其与现有数据系统如PostgreSQL结合构建智能搜索、推荐或问答系统时仍面临从原理到落地的鸿沟。本文旨在为有一定机器学习或数据库基础的工程师提供一条从理解Transformer核心机制到利用PostgreSQL进行大模型相关数据存储与检索的实战路径。我们将不涉及复杂的模型训练而是聚焦于如何将预训练好的大模型如通过API或本地部署与PostgreSQL数据库协同工作构建一个可运行的“模型数据”应用原型。通过本文你将掌握如何设计存储向量嵌入的表结构如何利用PostgreSQL的扩展进行相似性搜索以及如何构建一个从文本输入到智能检索输出的完整流程。1. 理解Transformer与向量嵌入大模型的能力核心要应用大模型首先需要理解其输出是什么。以Transformer为核心的现代大模型如BERT、GPT系列并不直接输出答案而是将输入文本转化为一个高维的、富含语义信息的数值向量通常称为“嵌入”Embedding或“向量表示”。1.1 Attention机制从理解上下文到生成向量Transformer架构的核心是自注意力Self-Attention机制。它允许模型在处理一个词时权衡句子中所有其他词的重要性。这与传统循环神经网络RNN逐词处理、容易遗忘长距离信息的方式截然不同。通俗地讲自注意力机制让模型具备了“联系上下文”的能力。例如在句子“苹果发布了新款手机它的价格很高”中模型要理解“它”指代“手机”就需要将“它”与“手机”建立强关联而与“苹果”公司建立弱关联。自注意力通过计算词与词之间的相关性分数Attention Score来实现这一点。对于下游应用如智能搜索而言我们并不关心中间复杂的注意力权重计算过程而是利用模型最终输出的向量。这个向量凝聚了整个输入序列的语义信息。语义相近的文本其向量在空间中的距离如余弦相似度也会更近。1.2 从模型输出到应用接口Embedding API对于大多数应用开发者从头训练一个Transformer模型是不现实的。更常见的做法是使用预训练模型提供的Embedding生成接口。云端API如OpenAI的text-embedding-ada-002百度文心、智谱AI等国内大模型平台也提供类似的嵌入生成服务。你发送文本它返回一个浮点数数组向量。本地部署使用Hugging Face的transformers库加载开源模型如all-MiniLM-L6-v2在本地服务器生成嵌入。这避免了网络延迟和API费用但需要GPU资源。无论哪种方式最终你都会得到一个固定长度的向量例如1536维。这个向量就是后续所有操作存储、检索、比较的基础。1.3 为什么需要数据库向量存储与检索的挑战假设你有10万篇文档用户输入一个问题你需要找到最相关的几篇文档。最直接的方法是将用户问题转化为向量然后与10万个文档向量逐一计算相似度。这在内存中计算是O(n)的复杂度当n很大时百万、千万级实时检索变得不可能。这就是需要专门数据库的原因。像PostgreSQL这类关系型数据库通过pgvector这类扩展可以高效地索引和查询高维向量实现近似最近邻ANN搜索将复杂度从O(n)降低到O(log n)甚至更低从而支持海量向量的毫秒级检索。2. 环境准备PostgreSQL与pgvector扩展我们的实战环境将围绕PostgreSQL数据库和pgvector扩展搭建。这是目前将大模型能力与传统应用结合最流行、最成熟的方案之一。2.1 PostgreSQL安装与基础配置首先需要在你的开发机器或服务器上安装PostgreSQL。这里以Ubuntu 22.04为例其他系统可参考官方文档。# 更新包列表并安装PostgreSQL sudo apt update sudo apt install postgresql postgresql-contrib -y # 检查PostgreSQL服务状态 sudo systemctl status postgresql # 切换到postgres系统用户并进入数据库命令行 sudo -u postgres psql安装完成后建议进行一些基础安全配置修改postgres用户密码-- 在psql命令行中执行 \password postgres创建用于本项目的专用数据库和用户更安全CREATE DATABASE vector_db; CREATE USER vector_user WITH ENCRYPTED PASSWORD your_secure_password; GRANT ALL PRIVILEGES ON DATABASE vector_db TO vector_user; \q然后你可以用新用户连接psql -h localhost -U vector_user -d vector_db2.2 安装与启用pgvector扩展pgvector是PostgreSQL的一个开源扩展用于存储和查询向量数据类型。它支持欧几里得距离L2、内积inner product和余弦相似度cosine similarity等多种距离度量。安装方式从源码编译安装推荐版本可控# 安装编译依赖 sudo apt install build-essential postgresql-server-dev-14 -y # 下载pgvector源码请查看GitHub获取最新版本 git clone --branch v0.5.1 https://github.com/pgvector/pgvector.git cd pgvector make sudo make install使用包管理器如Ubuntu 22.04sudo apt install postgresql-14-pgvector注意版本号14需与你的PostgreSQL主版本号一致。在数据库中启用扩展使用psql连接到你的数据库如vector_db然后执行CREATE EXTENSION IF NOT EXISTS vector;可以通过以下命令验证是否安装成功-- 查看已安装扩展 \dx -- 测试vector类型 SELECT [1,2,3]::vector;如果返回[1,2,3]则说明扩展启用成功。2.3 Python环境与依赖库准备我们的应用层将使用Python编写需要安装必要的库。# 创建并激活一个Python虚拟环境推荐 python3 -m venv venv source venv/bin/activate # 安装核心依赖 pip install psycopg2-binary # PostgreSQL适配器 pip install openai # 如需使用OpenAI Embedding API # 或安装Hugging Face transformers用于本地模型 pip install transformers torch sentence-transformers # 安装数据库操作辅助库 pip install sqlalchemy pgvectorpgvectorPython库提供了与SQLAlchemy集成的ORM支持方便操作向量类型。3. 实战构建一个智能文档检索系统现在我们开始构建一个最小可运行的智能文档检索系统。场景是我们有一个文档库例如技术文章摘要用户输入一个自然语言问题系统返回语义上最相关的几篇文档。3.1 数据库表结构设计我们需要一张表来存储文档及其对应的向量嵌入。表结构设计是关键。-- 在PostgreSQL中执行以下SQL CREATE TABLE documents ( id BIGSERIAL PRIMARY KEY, title TEXT NOT NULL, -- 文档标题 content TEXT NOT NULL, -- 文档正文或摘要 content_embedding vector(1536), -- 文档内容的向量。维度需与你的嵌入模型输出一致。 metadata JSONB DEFAULT {}, -- 可存储来源、作者、标签等扩展信息 created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- 为向量列创建索引以加速搜索 -- 使用IVFFlat索引适用于中等规模数据集如百万级以内 CREATE INDEX ON documents USING ivfflat (content_embedding vector_cosine_ops) WITH (lists 100);关键参数解释vector(1536)定义了一个1536维的向量类型字段。你必须根据所选嵌入模型的输出维度修改这个数字。例如OpenAI的text-embedding-ada-002是1536维all-MiniLM-L6-v2是384维。JSONBPostgreSQL的二进制JSON类型非常适合存储灵活的结构化元数据且支持索引和查询。IVFFlat索引pgvector提供的近似最近邻索引。lists参数是索引中划分的列表数量值越大查询越精确但建索引越慢通常设置为sqrt(行数)或根据经验调整。对于千万级以上数据可以考虑使用HNSW索引pgvector0.5.0支持。3.2 生成与存储文档嵌入接下来我们编写Python脚本将原始文档文本转化为向量并存入数据库。这里以使用本地sentence-transformers模型为例。# embed_and_store.py import psycopg2 from sentence_transformers import SentenceTransformer import json # 1. 初始化嵌入模型首次运行会下载模型 print(正在加载嵌入模型...) # 这是一个轻量且效果不错的开源模型输出维度384 model SentenceTransformer(all-MiniLM-L6-v2) embedding_dimension 384 # 必须与模型输出维度一致 # 2. 连接数据库 conn psycopg2.connect( hostlocalhost, databasevector_db, uservector_user, passwordyour_secure_password ) cursor conn.cursor() # 3. 示例文档数据 documents [ { title: PostgreSQL安装指南, content: 本文详细介绍了在Ubuntu和CentOS系统上安装PostgreSQL的步骤包括基础配置和用户权限管理。, source: 内部Wiki }, { title: Transformer架构详解, content: 深入解析了Transformer模型中的自注意力机制、前馈网络以及编码器-解码器结构并附有示意图。, source: 技术博客 }, { title: 大模型微调实战, content: 使用LoRA方法在特定领域数据集上对开源大语言模型进行参数高效微调以提升其在垂直领域的表现。, source: 论文解读 }, # ... 可以添加更多文档 ] # 4. 处理并插入每篇文档 for doc in documents: text_to_embed doc[title] doc[content] # 简单拼接可根据需求调整 print(f正在处理文档: {doc[title]}) # 生成向量嵌入 # 注意model.encode返回的是numpy数组需要转换为list embedding model.encode(text_to_embed).tolist() # 准备插入SQL insert_sql INSERT INTO documents (title, content, content_embedding, metadata) VALUES (%s, %s, %s::vector(%s), %s) metadata json.dumps({source: doc[source]}) # 执行插入 cursor.execute(insert_sql, (doc[title], doc[content], embedding, embedding_dimension, metadata)) # 5. 提交事务并关闭连接 conn.commit() print(f成功插入 {len(documents)} 篇文档。) cursor.close() conn.close()运行脚本前请确保数据库vector_db和表documents已创建。脚本中的数据库连接参数主机、密码等已修改正确。embedding_dimension变量值此处为384与模型输出及表结构定义完全一致。运行脚本python embed_and_store.py3.3 实现语义搜索查询现在数据库里已经有了带向量的文档。我们可以实现核心的搜索功能将用户查询转换为向量然后在数据库中查找最相似的文档向量。# search.py import psycopg2 from sentence_transformers import SentenceTransformer import sys # 加载相同的嵌入模型 model SentenceTransformer(all-MiniLM-L6-v2) def search_similar_documents(query_text, top_k3): 根据查询文本搜索最相关的文档。 Args: query_text (str): 用户输入的查询语句。 top_k (int): 返回最相似文档的数量。 Returns: list: 包含文档信息和相似度得分的列表。 # 1. 将查询文本转换为向量 query_embedding model.encode(query_text).tolist() # 2. 连接数据库 conn psycopg2.connect( hostlocalhost, databasevector_db, uservector_user, passwordyour_secure_password ) cursor conn.cursor() # 3. 执行相似度搜索SQL # 使用余弦相似度 (1 - cosine_distance)。值越大越相似。 search_sql SELECT id, title, content, metadata, 1 - (content_embedding %s::vector(%s)) as similarity FROM documents ORDER BY content_embedding %s::vector(%s) LIMIT %s; embedding_dimension 384 cursor.execute(search_sql, (query_embedding, embedding_dimension, query_embedding, embedding_dimension, top_k)) # 4. 获取结果 results cursor.fetchall() cursor.close() conn.close() # 5. 格式化输出 formatted_results [] for row in results: doc_id, title, content, metadata, similarity row formatted_results.append({ id: doc_id, title: title, content_preview: content[:150] ..., # 预览 similarity_score: round(similarity, 4), # 保留4位小数 metadata: metadata }) return formatted_results if __name__ __main__: if len(sys.argv) 1: query .join(sys.argv[1:]) else: query 怎么安装PostgreSQL数据库 # 默认查询 print(f查询: 「{query}」\n) print(搜索结果:) print(- * 50) results search_similar_documents(query, top_k3) for i, res in enumerate(results, 1): print(f{i}. [{res[title]}]) print(f 相似度: {res[similarity_score]}) print(f 内容: {res[content_preview]}) print(f 来源: {res[metadata].get(source, N/A)}) print()关键点解释这是pgvector定义的向量余弦距离运算符。1 - (向量A 向量B)即得到余弦相似度。ORDER BY content_embedding query_vector按距离从小到大排序即最相似的排在最前面。我们使用了与存储时完全相同的模型来生成查询向量这是保证搜索有效性的前提。运行测试# 搜索“安装数据库” python search.py 安装数据库 # 搜索“注意力机制” python search.py 注意力机制你应该能看到系统返回了与查询语义最相关的文档即使查询词和文档内容没有完全匹配的字词。4. 关键配置、优化与排错指南将基础流程跑通后我们需要关注性能、精度和稳定性这是项目上线的关键。4.1 向量索引选型与参数调优pgvector支持多种索引类型选择取决于数据规模和精度要求。索引类型适用场景特点创建命令示例IVFFlat数据量中等数万到数百万需要平衡速度与精度。基于聚类的索引。lists参数是关键值越大越精确但越慢。建索引快查询速度中等。CREATE INDEX ON docs USING ivfflat (embedding vector_cosine_ops) WITH (lists 100);HNSW数据量大百万级以上追求高查询速度和高召回率。基于图结构的索引。m和ef_construction参数影响构建质量和速度。查询速度极快但建索引慢占用内存多。CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops) WITH (m 16, ef_construction 64);无索引数据量很小1万或仅用于开发测试。顺序扫描Seq Scan。精度100%但速度随数据量线性下降。不创建索引即可。参数调优建议IVFFlat的lists通常设置为sqrt(表行数)。例如100万行数据可设为1000。可以先设为100根据查询性能速度与召回率再调整。HNSW的m和ef_constructionm每个节点的最大连接数通常为16-48ef_construction构建时动态候选集大小通常为100-200。值越大索引质量越高但构建越慢。查询时的ef_search仅HNSW可以在查询时指定控制搜索深度。SET hnsw.ef_search 100;。值越大结果越准但越慢。4.2 混合查询结合向量搜索与属性过滤在实际应用中我们经常需要将语义搜索与传统的属性过滤结合。例如“查找与‘机器学习’相关且发布于2023年之后的技术博客”。pgvector完美支持这种混合查询因为向量搜索只是WHERE子句中的一个条件。-- 示例结合向量搜索和JSONB元数据过滤 SELECT id, title, content, 1 - (content_embedding %s) as similarity FROM documents WHERE metadata-source 技术博客 -- 过滤来源 AND created_at 2023-01-01 -- 过滤时间 ORDER BY content_embedding %s -- 按相似度排序 LIMIT 10;PostgreSQL的查询优化器会尝试高效地组合这些过滤条件。4.3 常见问题与排查路径在开发和生产中你可能会遇到以下问题问题现象可能原因检查与解决方式插入向量时维度错误表定义的vector(n)维度与插入数据的维度不匹配。1. 检查嵌入模型的输出维度如len(embedding)。2. 检查表结构ALTER TABLE documents ALTER COLUMN content_embedding TYPE vector(正确的维度);。相似度搜索结果不相关1. 查询向量与文档向量不是同一模型生成。2. 文本预处理方式不一致如存储时拼接了标题查询时没拼接。3. 数据量太少或质量差。1.确保使用完全相同的模型和参数生成所有向量。2. 统一文本预处理流程分词、清洗、拼接逻辑。3. 增加高质量数据或尝试不同的嵌入模型。搜索速度非常慢1. 数据量大了但没建索引。2. 索引类型或参数不合适。3. 混合查询中其他条件选择性差。1. 使用EXPLAIN ANALYZE查看查询计划确认是否使用了向量索引。2. 根据数据规模选择合适的索引IVFFlat/HNSW并调整参数。3. 为用于过滤的字段如created_at创建B-tree索引。内存或磁盘占用过高1. 向量维度很高如4096数据量巨大。2. HNSW索引占用内存较多。1. 考虑使用维度更低的嵌入模型如从1536维降至384维评估精度损失。2. 对于HNSW适当降低m和ef_construction参数。3. 定期清理无用数据或考虑分区表。连接数据库失败1. PostgreSQL服务未启动。2. 连接参数主机、端口、用户、密码、数据库名错误。3.pg_hba.conf配置未允许该用户从该主机连接。1.sudo systemctl status postgresql。2. 仔细核对连接字符串。3. 检查/etc/postgresql/14/main/pg_hba.conf添加如host all all 127.0.0.1/32 md5的行生产环境需严格配置。4.4 生产环境最佳实践模型版本管理嵌入模型一旦升级其输出的向量空间可能发生变化导致新旧向量不可比。所有向量必须用同一版本模型生成。在数据库中记录模型版本号如存在metadata字段中。批量处理与异步处理海量历史数据生成嵌入时使用批处理并考虑异步任务队列如Celery避免阻塞主应用。监控与告警监控数据库连接数、查询延迟、索引缓存命中率。为慢查询设置告警。备份与恢复向量数据是核心资产。确保你的备份策略如pg_dump物理备份包含这些数据并测试恢复流程。安全不要将数据库连接密码硬编码在代码中使用环境变量或配置中心。为应用数据库用户设置最小必要权限如只有SELECT, INSERT, UPDATE权限无DROP权限。对用户输入的查询文本进行必要的清洗和长度限制防止注入或异常消耗。考虑专用向量数据库当数据量达到亿级或对查询延迟要求极高10ms时可以评估像Weaviate、Qdrant、Milvus这样的专用向量数据库。PostgreSQL pgvector 的优势在于技术栈统一和事务支持。5. 扩展方向从检索到生成与应用基于“Transformer生成向量 PostgreSQL存储检索”这个基础模式可以扩展出许多高级应用。5.1 实现问答RAG系统检索增强生成RAG是目前将大语言模型与私有知识结合的主流范式。我们的系统已经完成了“检索”部分。接下来可以将搜索到的相关文档片段作为上下文。连同用户问题一起构造提示词Prompt。调用大语言模型如GPT-4、文心一言、通义千问的生成API。让模型基于上下文生成精准、可靠的答案。这避免了模型“胡言乱语”并能让答案基于你的私有数据。5.2 多模态搜索pgvector不仅可以存储文本向量还可以存储图像、音频的向量。你可以使用多模态模型如CLIP将图片和文本映射到同一向量空间。将图片向量和文本向量存入同一张PostgreSQL表。实现“以图搜图”或“以文搜图”。例如用户输入“一只在沙滩上的狗”可以返回相关的图片。5.3 推荐系统将用户的历史行为点击、购买、浏览物品表示为向量或将用户画像表示为向量。通过计算用户向量与物品向量的相似度可以实现个性化的内容推荐。PostgreSQL可以同时处理用户关系数据、物品属性数据和向量相似度计算简化了架构。5.4 使用pgvector的最新特性持续关注pgvector的更新例如并行索引构建加速大规模数据索引创建。标量量化通过降低向量数值精度来压缩存储空间、提升查询速度。更多距离度量支持更多样化的相似度计算方式。从理解Transformer如何将文本转化为语义向量到在PostgreSQL中高效存储和检索这些向量这条路径打通了从大模型理论到实际业务应用的桥梁。关键在于保持一致性使用相同的模型处理所有文本确保向量在同一个空间内可比。在项目初期使用PostgreSQL pgvector的组合足以应对百万级数据量的场景它最大的优势是简化了技术栈让开发者可以在熟悉的关系型数据库生态内完成向量计算。当业务规模进一步扩大出现性能瓶颈时再考虑引入专用的向量数据库也不迟。下一步你可以尝试将本地的sentence-transformers模型替换为效果更强的云端Embedding API或者集成一个开源LLM构建完整的RAG问答应用。

相关新闻

如何为Universal Android Debloater构建高效的自更新系统:5步完整指南

如何为Universal Android Debloater构建高效的自更新系统:5步完整指南

如何为Universal Android Debloater构建高效的自更新系统:5步完整指南 【免费下载链接】universal-android-debloater Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices. Improve your privacy, the security and battery life…

2026/10/12 22:14:54 阅读更多 →
FPGA竞赛全流程指南:从零备赛到求职加成的实战解析

FPGA竞赛全流程指南:从零备赛到求职加成的实战解析

如果你正在寻找一个能快速验证FPGA技能、连接校园与产业、并且可能直接拿到名企Offer的实战机会,那么FPGA竞赛就是为你准备的。它绝不是纸上谈兵的理论考试,而是从算法设计、代码实现到硬件调试、系统集成的全流程工程挑战。无论是全国性的“集成电路创新…

2026/9/29 12:11:22 阅读更多 →
Java字符串处理:从基础原理到性能优化实战

Java字符串处理:从基础原理到性能优化实战

1. Java字符串深度解析:从基础到高阶实战 字符串处理是Java编程中最基础也最核心的技能之一。作为一门面向对象的语言,Java对字符串的处理有着独特的设计理念和丰富的API支持。在实际开发中,字符串操作几乎出现在所有业务场景中,从…

2026/10/3 15:37:26 阅读更多 →

最新新闻

ReentrantLock源码解析:从AQS到公平锁与Condition

ReentrantLock源码解析:从AQS到公平锁与Condition

之前在团队内部做过一次JUC的分享,正好讲到ReentrantLock,整理完资料后发现很多同学对它的理解停留在“和synchronized差不多”这个层面,但真要问到底层的AQS队列、公平非公平的实现差异、Condition的等待通知机制,基本都答不上来…

2026/10/15 15:24:12 阅读更多 →
车灯模组PCBA制造全解析:四大差异、工艺难点与供应商评估体系

车灯模组PCBA制造全解析:四大差异、工艺难点与供应商评估体系

一、车灯模组PCBA与普通PCBA的四点不同 车灯模组PCBA的完整制造链路要打通SMT贴片、DIP插件、后焊、测试、三防涂覆和模组组装,是电子、光学、结构、车规可靠性几条线交叉的活儿,不是单纯做一块电路板。板子上常见核心器件包括LED灯珠、恒流驱动、MCU、L…

2026/10/15 15:24:12 阅读更多 →
花一周把 AI 率从 62% 改到 78% 后来我才想明白:正确的顺序比努力更重要

花一周把 AI 率从 62% 改到 78% 后来我才想明白:正确的顺序比努力更重要

一、不能更改的原因,并不是因为不会改最初的想法很简单:如果人工智能比率很高,就手动修改一下。但事实远比想象中复杂。最开始,我的想法很简单,就是如果人工智能比率很高的话,就手动修改一下。我做的是把“…

2026/10/15 15:24:12 阅读更多 →
为什么你的代码不会泄露:PuppyOne 多 Agent 的安全边界、审批机制与本地优先设计

为什么你的代码不会泄露:PuppyOne 多 Agent 的安全边界、审批机制与本地优先设计

【免费下载链接】puppyone Context drive for your AI agents 项目地址: https://gitcode.com/gh_mirrors/pu/puppyone 点击查看 免费下载 PuppyOne 是一款本地优先(Local-first)的 AI Agent 编辑器,它把 Codex、Claude Agent、C…

2026/10/15 15:24:12 阅读更多 →
Zabbix 6.0 监控系统部署实战:从安装到主机接入与告警配置

Zabbix 6.0 监控系统部署实战:从安装到主机接入与告警配置

1. 安装前的需求梳理与版本选择先说结论:Zabbix 是我用过的最“重”但同时也是最不折腾人的监控系统。这句话听起来矛盾,但如果你真的从零部署过一套监控平台,你会明白我的意思——Nagios 配置规则能把人绕晕,Prometheus 的生态要…

2026/10/15 15:24:12 阅读更多 →
大模型的 Token 到底怎么算?一篇讲清

大模型的 Token 到底怎么算?一篇讲清

大模型的 Token 到底怎么算?一篇讲清 上个月我的 Agent 已经能跑通 demo,上线后账单直接翻了 5 倍。查下来问题很朴素——他每次都把完整对话历史无脑塞回去,平均单次请求带 4 万多 token。我在想:「我也不知道为什么这么贵&#…

2026/10/15 15:23:11 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →