基于RAG与LLM构建个人智能知识库:从Karpathy‘s LLM Wiki到第二大脑
在AI技术快速迭代的今天如何系统性地学习并沉淀大语言模型LLM知识是许多开发者和研究者面临的共同挑战。网上资料虽然丰富但往往零散、不成体系导致学习效率低下知识难以形成长期有效的积累。本文将围绕一个极具启发性的项目——Karpathy‘s LLM Wiki as a “Brain KIT”为你拆解如何将其作为构建个人“知识复利”系统的核心工具。我们将从概念解析、环境搭建、核心功能实践到高级应用手把手带你打造一个专属于你的、能够持续进化的LLM知识库。无论你是AI领域的初学者还是希望深化理解的进阶开发者都能从中获得一套可落地的完整方案。1. 背景与核心概念什么是“Brain KIT”在深入实践之前我们首先要理解这个项目的核心价值。它并非一个全新的软件而是一个基于现有优秀工具的方法论与实践框架。1.1 LLM Wiki 与 Andrej KarpathyAndrej Karpathy 是AI领域的知名专家前特斯拉AI总监、OpenAI研究员。他创建的LLM Wiki是一个开源的知识库项目旨在系统化地收集、整理关于大语言模型的一切知识包括论文解读、技术架构、训练技巧、应用场景等。这个Wiki本身就是一个高质量、结构化的知识源。1.2 “Brain KIT” 的核心理念“Brain KIT” 在这里是一个比喻它代表一套用于构建和管理个人知识并能产生“复利效应”的工具包Knowledge Investment Toolkit。其核心思想是知识系统化将碎片化信息如论文、博客、代码片段、个人笔记转化为相互关联的结构化知识网络。知识可计算化利用LLM的能力对知识库进行智能查询、总结、关联和推理让静态知识“活”起来。知识复利随着知识库的不断积累和内部链接的增强你每次查询或学习新知识的效率会越来越高新知识能快速与旧知识建立连接产生“112”的效应。1.3 与本项目相关的技术生态理解以下关键概念有助于我们更好地构建系统LLM大语言模型如GPT-4、Llama、ChatGLM等是本项目的“大脑”负责理解和处理知识。Wiki系统一种支持链接、分类和协作的内容管理系统。本项目常使用基于Markdown的Wiki工具如Wiki.js、MkDocs或笔记软件如Obsidian、Logseq。RAG检索增强生成。这是实现“可计算知识库”的关键技术。它允许LLM从你的本地知识库中检索相关信息再基于这些信息生成更准确、更相关的回答。AI Agent能够自主执行复杂任务的智能体。在本项目中可以构建一个Agent来自动化知识库的维护如抓取新论文、总结内容、建立索引等。简单来说本项目的目标是将Karpathy的LLM Wiki或其他优质知识源作为种子结合Wiki工具和RAG技术打造一个属于你个人的、持续生长且智能交互的“第二大脑”。2. 环境准备与工具选型工欲善其事必先利其器。构建“Brain KIT”需要一系列工具的配合。以下是一个推荐的技术栈你可以根据自身情况调整。2.1 核心工具清单工具类别推荐选项作用说明知识管理/ WikiObsidian, Logseq, Wiki.js, MkDocs用于编辑、组织和可视化你的知识网络。Obsidian/Logseq适合个人Wiki.js适合团队。内容存储本地Markdown文件, Git仓库所有知识以Markdown格式保存用Git进行版本管理。向量数据库Chroma, Qdrant, Weaviate, Pinecone存储知识片段的向量嵌入实现快速语义检索。本地开发推荐Chroma。嵌入模型text-embedding-ada-002 (OpenAI), BGE, sentence-transformers将文本转换为向量。本地部署可选BAAI/bge-small-zh-v1.5或all-MiniLM-L6-v2。大语言模型GPT-4 API, Claude API, 本地部署的Llama 3, ChatGLM作为推理和生成的核心。根据预算和隐私要求选择云端或本地。开发框架LangChain, LlamaIndex简化RAG流程的构建连接LLM、向量库和你的数据。自动化脚本Python用于编写数据爬取、处理、导入和知识库维护的Agent。2.2 基础环境搭建我们以最通用的本地开发环境为例。操作系统Windows 10/11, macOS, 或 Linux (Ubuntu 20.04)编程语言Python 3.9包管理pip 或 conda首先创建一个项目目录并初始化Python环境。# 创建项目目录 mkdir brain-kit-llm-wiki cd brain-kit-llm-wiki # 创建虚拟环境 (可选但推荐) python -m venv venv # Windows 激活 venv\Scripts\activate # macOS/Linux 激活 source venv/bin/activate # 安装核心Python库 pip install langchain langchain-community langchain-openai pip install chromadb sentence-transformers pip install beautifulsoup4 requests markdownify # 用于网页内容抓取和转换 pip install pypdf python-docx # 用于处理PDF和Word文档2.3 知识管理工具安装以Obsidian为例Obsidian是一个强大的、基于本地Markdown文件的知识管理工具其“双向链接”和“图谱视图”功能完美契合“Brain KIT”的理念。访问 Obsidian官网 下载并安装。打开Obsidian创建一个新的仓库Vault路径指向我们项目下的一个子目录例如./knowledge_vault。这个目录将存放我们所有的Markdown笔记也是我们后续进行文本处理和向量化的源数据目录。至此基础环境准备完毕。接下来我们将进入核心环节构建知识库。3. 核心流程拆解从数据到智能问答构建一个智能知识库包含几个关键步骤数据获取、文本处理、向量化存储、检索与生成。下面我们逐一拆解。3.1 数据获取与预处理我们的知识源可以是多元化的。以“Karpathy‘s LLM Wiki”为起点我们可以扩展至论文、技术博客、官方文档等。步骤1获取LLM Wiki内容Karpathy的LLM Wiki通常托管在GitHub上。我们可以克隆仓库或直接下载Markdown文件。# 克隆Wiki仓库假设仓库地址 git clone https://github.com/karpathy/llm-wiki.git ./source_data/llm-wiki克隆后./source_data/llm-wiki目录下会包含一系列.md文件。步骤2编写预处理脚本我们需要一个Python脚本将Markdown文件中的纯文本内容提取出来并进行清洗和分块。分块是为了避免文本过长影响后续的嵌入和检索效果。创建一个文件data_processor.py# data_processor.py import os import re from pathlib import Path from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.schema import Document def load_markdown_files(directory_path): 加载指定目录下的所有Markdown文件 docs [] for root, dirs, files in os.walk(directory_path): for file in files: if file.endswith(“.md”): file_path Path(root) / file try: with open(file_path, ‘r’, encoding‘utf-8’) as f: text f.read() # 获取相对路径作为元数据的一部分 relative_path os.path.relpath(file_path, directory_path) # 创建LangChain Document对象 doc Document( page_contenttext, metadata{“source”: str(file_path), “relative_path”: relative_path} ) docs.append(doc) except Exception as e: print(f“Error reading {file_path}: {e}”) return docs def split_documents(documents, chunk_size1000, chunk_overlap200): 将文档分割成小块 text_splitter RecursiveCharacterTextSplitter( chunk_sizechunk_size, chunk_overlapchunk_overlap, length_functionlen, separators[“\n\n”, “\n”, “。”, “.”, “ ”, “”] ) return text_splitter.split_documents(documents) if __name__ “__main__”: # 示例处理LLM Wiki数据 wiki_dir “./source_data/llm-wiki” raw_docs load_markdown_files(wiki_dir) print(f“Loaded {len(raw_docs)} markdown files.”) split_docs split_documents(raw_docs) print(f“Split into {len(split_docs)} chunks.”) # 可以在这里将 split_docs 保存为JSON或直接送入下一步向量化 # 例如保存到文件 import json with open(‘./processed_data/split_chunks.json’, ‘w’, encoding‘utf-8’) as f: # 将Document对象转换为可序列化的字典 data_to_save [{“page_content”: doc.page_content, “metadata”: doc.metadata} for doc in split_docs] json.dump(data_to_save, f, ensure_asciiFalse, indent2) print(“Chunks saved to JSON file.”)3.2 向量化与存储文本分块后我们需要将其转换为向量嵌入并存入向量数据库以便进行语义搜索。步骤创建向量数据库创建文件vector_store.py# vector_store.py import chromadb from chromadb.config import Settings from sentence_transformers import SentenceTransformer import json class VectorStoreManager: def __init__(self, persist_directory“./chroma_db”, embedding_model_name“BAAI/bge-small-zh-v1.5”): # 初始化嵌入模型本地 self.embedding_model SentenceTransformer(embedding_model_name) # 初始化Chroma客户端设置持久化路径 self.client chromadb.PersistentClient(pathpersist_directory) # 获取或创建集合 self.collection self.client.get_or_create_collection( name“llm_wiki_knowledge”, metadata{“hnsw:space”: “cosine”} # 使用余弦相似度 ) def get_embedding(self, text): 生成单个文本的嵌入向量 return self.embedding_model.encode(text).tolist() def add_documents(self, documents): 将文档列表添加到向量数据库 ids [] embeddings [] metadatas [] contents [] for idx, doc in enumerate(documents): content doc[“page_content”] embedding self.get_embedding(content) ids.append(f“id_{idx}”) embeddings.append(embedding) metadatas.append(doc[“metadata”]) contents.append(content) # 批量添加到集合 self.collection.add( embeddingsembeddings, documentscontents, metadatasmetadatas, idsids ) print(f“Added {len(documents)} documents to vector store.”) def search(self, query, top_k5): 语义搜索 query_embedding self.get_embedding(query) results self.collection.query( query_embeddings[query_embedding], n_resultstop_k ) return results if __name__ “__main__”: # 1. 初始化向量存储管理器 vs_manager VectorStoreManager() # 2. 加载预处理好的数据 with open(‘./processed_data/split_chunks.json’, ‘r’, encoding‘utf-8’) as f: documents json.load(f) # 3. 添加到向量数据库 vs_manager.add_documents(documents[:50]) # 先添加前50条作为测试 # 4. 测试搜索 test_query “什么是Transformer模型” search_results vs_manager.search(test_query) print(f“\nQuery: ‘{test_query}’”) print(“Top results:“) for i, (doc, meta) in enumerate(zip(search_results[‘documents’][0], search_results[‘metadatas’][0])): print(f”[{i1}] {doc[:200]}...“) # 打印前200个字符 print(f” Source: {meta.get(‘relative_path’, ‘N/A’)}\n”)运行此脚本后会在./chroma_db目录下生成向量数据库文件。后续查询将直接读取这个数据库无需重复计算嵌入。3.3 构建RAG问答链有了向量库我们就可以构建一个完整的问答系统。这里使用LangChain来简化流程。创建文件rag_qa.py# rag_qa.py from langchain.chains import RetrievalQA from langchain_community.llms import Ollama # 假设使用本地Ollama运行的Llama 3 from langchain_openai import ChatOpenAI # 或者使用OpenAI API from vector_store_manager import VectorStoreManager # 导入我们上面写的类 from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import Chroma import os class RAGQASystem: def __init__(self, use_local_llmTrue): # 初始化嵌入模型与向量库创建时保持一致 embeddings HuggingFaceEmbeddings(model_name“BAAI/bge-small-zh-v1.5”) # 从持久化目录加载向量库 persist_directory “./chroma_db” self.vectorstore Chroma( persist_directorypersist_directory, embedding_functionembeddings, collection_name“llm_wiki_knowledge” ) # 初始化LLM if use_local_llm: # 使用本地Ollama服务确保已安装并运行了Ollama及模型如llama3:8b self.llm Ollama(model“llama3:8b”, temperature0.1) else: # 使用OpenAI API (需要设置环境变量 OPENAI_API_KEY) self.llm ChatOpenAI(model_name“gpt-3.5-turbo”, temperature0.1) # 构建RetrievalQA链 self.qa_chain RetrievalQA.from_chain_type( llmself.llm, chain_type“stuff”, # 简单地将检索到的文档“塞”给LLM retrieverself.vectorstore.as_retriever(search_kwargs{“k”: 4}), return_source_documentsTrue, # 返回源文档用于引用 verboseFalse ) def ask(self, question): 提问并获取答案 result self.qa_chain({“query”: question}) answer result[“result”] source_docs result[“source_documents”] # 格式化输出 response f“Q: {question}\nA: {answer}\n\n---\n**参考来源:**\n” for i, doc in enumerate(source_docs): source doc.metadata.get(“source”, “Unknown”) response f”{i1}. {source}\n” return response if __name__ “__main__”: # 初始化系统使用本地LLM qa_system RAGQASystem(use_local_llmTrue) # 进行问答测试 questions [ “请解释一下注意力机制Attention Mechanism的基本思想。”, “GPT模型和BERT模型的主要区别是什么”, “如何评估一个大语言模型的好坏” ] for q in questions: print(qa_system.ask(q)) print(“”*50)这个系统的工作流程是用户提问 - 将问题转换为向量 - 在向量库中搜索最相关的知识片段 - 将问题和相关片段一起提交给LLM - LLM生成基于知识的答案。4. 完整实战搭建个人LLM知识库系统现在我们将上述模块整合并加入自动化与可视化构建一个更完整的系统。4.1 项目结构规划一个清晰的项目结构有助于长期维护。brain-kit-llm-wiki/ ├── README.md ├── requirements.txt ├── config.yaml # 配置文件 ├── source_data/ # 原始知识源 │ ├── llm-wiki/ # Karpathy‘s LLM Wiki │ ├── papers/ # 下载的论文PDF │ └── blogs/ # 收藏的技术博客 ├── processed_data/ # 处理后的中间数据 │ └── split_chunks.json ├── chroma_db/ # 向量数据库自动生成 ├── knowledge_vault/ # Obsidian知识库目录 ├── scripts/ # 自动化脚本 │ ├── data_processor.py │ ├── vector_store.py │ ├── rag_qa.py │ ├── web_crawler.py # 网页抓取脚本 │ └── sync_obsidian.py # 与Obsidian同步的脚本 ├── app/ # 简单的Web或CLI应用 │ ├── main.py │ └── templates/ └── tests/ # 测试文件4.2 编写自动化知识更新脚本知识库需要持续更新。我们可以编写一个脚本定期从指定的RSS源或GitHub仓库抓取新内容自动处理后更新向量库。scripts/web_crawler.py示例简化版# scripts/web_crawler.py import feedparser from bs4 import BeautifulSoup import requests from data_processor import split_documents # 复用之前的处理函数 from vector_store_manager import VectorStoreManager import hashlib def fetch_blog_posts(rss_url“https://karpathy.ai/feed.xml”): 从RSS订阅抓取博客文章 feed feedparser.parse(rss_url) new_docs [] for entry in feed.entries: # 检查是否已处理过通过URL哈希 url_hash hashlib.md5(entry.link.encode()).hexdigest() if not is_already_processed(url_hash): print(f“Fetching: {entry.title}”) # 获取文章内容 try: response requests.get(entry.link, timeout10) soup BeautifulSoup(response.content, ‘html.parser’) # 提取正文这里需要根据目标网站结构调整选择器 main_content soup.find(‘article’).get_text(stripTrue) if soup.find(‘article’) else soup.get_text(stripTrue) doc { “page_content”: f“# {entry.title}\n\n{main_content}”, “metadata”: {“source”: entry.link, “title”: entry.title, “type”: “blog”, “hash”: url_hash} } new_docs.append(doc) mark_as_processed(url_hash) except Exception as e: print(f“Error fetching {entry.link}: {e}”) return new_docs def is_already_processed(url_hash): 检查URL是否已处理简单示例可用数据库或文件记录 try: with open(‘./processed_data/processed_urls.txt’, ‘r’) as f: processed f.read().splitlines() return url_hash in processed except FileNotFoundError: return False def mark_as_processed(url_hash): 标记URL为已处理 with open(‘./processed_data/processed_urls.txt’, ‘a’) as f: f.write(url_hash ‘\n’) def update_knowledge_base(): 主更新流程 print(“开始抓取新内容...”) new_posts fetch_blog_posts() if new_posts: print(f“抓取到 {len(new_posts)} 篇新文章。”) # 文本分块 split_new_docs split_documents(new_posts) # 更新向量数据库 vs_manager VectorStoreManager() vs_manager.add_documents(split_new_docs) print(“知识库更新完成”) # 可选将新内容也保存为Markdown文件到Obsidian目录 for doc in new_posts: save_to_obsidian(doc) else: print(“未发现新内容。”) def save_to_obsidian(document): 将文档保存为Obsidian笔记 import os import frontmatter import yaml vault_path “./knowledge_vault” title document[“metadata”].get(“title”, “Untitled”) # 生成安全的文件名 safe_title “”.join([c for c in title if c.isalnum() or c in (‘ ‘, ‘-’, ‘_’)]).rstrip() filename f”{safe_title}.md” filepath os.path.join(vault_path, “Inbox”, filename) # 放到Inbox文件夹便于整理 # 使用frontmatter添加元数据 post frontmatter.Post( document[“page_content”], **document[“metadata”] ) with open(filepath, ‘w’, encoding‘utf-8’) as f: f.write(frontmatter.dumps(post)) print(f“Saved to Obsidian: {filepath}”) if __name__ “__main__”: update_knowledge_base()4.3 创建简易交互界面为了方便使用我们可以创建一个简单的命令行或Web界面。这里使用Gradio快速搭建一个Web UI。创建app/main.py# app/main.py import gradio as gr from scripts.rag_qa import RAGQASystem import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 初始化QA系统启动时加载有一定延迟 qa_system RAGQASystem(use_local_llmTrue) def answer_question(question, history): 处理用户提问 try: response qa_system.ask(question) # 将回答添加到历史记录 history.append((question, response)) return history, “” # 清空输入框 except Exception as e: return history, f“出错啦{str(e)}” # 使用Gradio创建界面 with gr.Blocks(title“LLM Brain KIT - 智能知识库助手”) as demo: gr.Markdown(“# LLM Brain KIT 智能知识库助手”) gr.Markdown(“基于您的个人知识库LLM Wiki等进行智能问答。”) chatbot gr.Chatbot(label“对话历史”, height500) msg gr.Textbox(label“请输入您的问题”, placeholder“例如Transformer的架构是怎样的”) clear gr.Button(“清空对话”) def user(user_message, history): return “”, history [[user_message, None]] def bot(history): question history[-1][0] response qa_system.ask(question) history[-1][1] response return history msg.submit(user, [msg, chatbot], [msg, chatbot], queueFalse).then( bot, chatbot, chatbot ) clear.click(lambda: None, None, chatbot, queueFalse) gr.Markdown(“---\n**说明**回答基于您本地知识库生成首次加载模型和向量库可能需要一些时间。”) if __name__ “__main__”: demo.launch(server_name“0.0.0.0”, server_port7860, shareFalse)运行python app/main.py即可在浏览器中打开一个交互式问答界面。5. 常见问题与排查思路在搭建和使用过程中你可能会遇到以下问题问题现象可能原因排查与解决思路运行脚本时提示缺少模块依赖未安装或虚拟环境未激活。1. 确认已激活虚拟环境。2. 运行pip install -r requirements.txt安装所有依赖。向量搜索返回无关内容1. 嵌入模型不匹配。2. 文本分块不合理过大或过小。3. 向量数据库相似度度量方式不合适。1. 确保创建和查询时使用相同的嵌入模型。2. 调整chunk_size和chunk_overlap参数如500/100。3. 尝试更换嵌入模型如从BAAI/bge-small-zh换为text-embedding-ada-002。4. 在Chroma中尝试不同的距离函数cosine,l2,ip。LLM回答质量差或胡言乱语1. 检索到的上下文不相关。2. LLM本身能力不足或提示词不佳。3. 上下文长度超出模型限制。1. 先检查上一条“搜索无关”的问题。2. 在RAG链中使用chain_type“map_reduce”或“refine”处理长文档。3. 优化提示词在RetrievalQA中通过chain_type_kwargs传入自定义提示。4. 考虑升级LLM如从7B模型升级到70B或使用GPT-4。Ollama本地模型无法连接Ollama服务未启动或模型未拉取。1. 在终端运行ollama serve启动服务。2. 运行ollama pull llama3:8b拉取模型。3. 在代码中检查Ollama的API地址默认http://localhost:11434。知识库更新后问答未生效向量数据库未持久化或未重新加载。1. 确保VectorStoreManager.add_documents被正确调用。2. 检查向量数据库的持久化路径是否正确。3. 重启你的问答应用以加载新的向量库数据。Gradio界面无法打开端口被占用或防火墙阻止。1. 更改demo.launch(server_port7861)中的端口号。2. 检查本地防火墙设置。3. 确保在正确的网络环境下运行server_name“0.0.0.0”允许局域网访问。6. 最佳实践与工程建议要让你的“Brain KIT”真正产生复利而不仅仅是一个玩具项目需要遵循一些工程最佳实践。6.1 知识管理规范统一文件格式坚持使用Markdown。它纯文本、易版本管理、被广泛支持。建立笔记模板在Obsidian中为不同类型的知识如论文笔记、概念解析、代码示例创建模板包含固定的元数据字段如tags、author、date、status。善用双向链接在笔记中积极链接相关概念。例如在“注意力机制”笔记中链接到“Transformer”笔记。这不仅能强化记忆未来也能被图分析工具利用。定期回顾与清理设定“知识维护日”回顾近期添加的笔记建立更深的链接归档或删除过时内容。6.2 技术架构优化分层存储策略热数据近期高频访问的知识存储在内存或SSD上的向量库中保证检索速度。温数据历史知识存储在向量库中但可能使用更经济的存储介质。冷数据原始Markdown文件用Git管理提供版本历史和完整上下文。混合检索结合语义搜索向量检索和关键词搜索如BM25。语义搜索擅长理解意图关键词搜索擅长精确匹配术语。LangChain的EnsembleRetriever可以轻松实现。元数据过滤在检索时利用元数据如source、type、date进行过滤。例如当询问“最新的LLM技术”时可以优先检索date较近的文档。查询重写与扩展在用户提问后、检索前使用一个小型LLM对查询进行重写或扩展以提高召回率。例如将“怎么训练GPT”扩展为“如何训练GPT模型GPT模型的训练步骤、训练数据、计算资源需求。”6.3 自动化与智能体定时抓取使用cronLinux/macOS或Task SchedulerWindows定时运行你的web_crawler.py脚本实现知识库的自动更新。构建知识消化Agent设计一个更复杂的Agent让它不仅能抓取文章还能自动总结长文。提取关键实体和概念。根据内容自动打上标签。建议与现有笔记的链接。建立反馈循环在问答界面添加“答案是否有用”的反馈按钮。将用户反馈特别是负面反馈记录下来用于优化检索策略或提示词。6.4 安全与隐私敏感信息处理如果你的知识库包含公司内部或个人敏感信息务必使用本地部署的嵌入模型和LLM如Llama 3、ChatGLM、BGE。避免使用需要上传数据到第三方API的服务。数据备份定期备份你的knowledge_vault目录和chroma_db目录。可以考虑将整个项目目录用Git管理并推送到私有Git仓库。访问控制如果你将Web界面部署到公网必须设置身份验证如Gradio的auth参数防止未授权访问。通过将Karpathy的LLM Wiki作为高质量种子并运用上述工具和方法论你构建的不仅仅是一个知识库而是一个能够持续学习、进化并与你共同成长的“第二大脑”。这个系统会随着你的使用和喂养变得越来越了解你的领域和思维习惯最终成为你学习和工作中不可替代的伙伴。

相关新闻

长沙燃气灶维修全域覆盖 欧米到家同城上门深度检修承诺不返工|打不着火|松手熄火|黄火冒黑烟|漏气|各类故障一站式解决

长沙燃气灶维修全域覆盖 欧米到家同城上门深度检修承诺不返工|打不着火|松手熄火|黄火冒黑烟|漏气|各类故障一站式解决

导读长沙燃气灶出现打不着火、点火后松手熄火、火焰发黄、冒黑烟、燃烧不均、旋钮失灵或疑似漏气等问题,可联系欧米到家统一报修热线400-996-9791。平台根据所在区域安排同城维修师傅上门,先检测故障原因,再说明维修方案和费用,确…

2026/8/11 16:01:00 阅读更多 →
力士乐伺服驱动器8069报警:电源板电容失效诊断与更换实操指南

力士乐伺服驱动器8069报警:电源板电容失效诊断与更换实操指南

最近在工业自动化现场,不少工程师都遇到了一个让人头疼的问题:力士乐伺服驱动器突然报警8069,设备停机,产线中断。这个故障代码看似简单,却往往指向一个隐蔽且关键的部件——电源驱动板上的电容。很多维修人员第一反应…

2026/8/11 16:01:00 阅读更多 →
物联网数据处理架构:AWS IoT Core与无服务器技术实战

物联网数据处理架构:AWS IoT Core与无服务器技术实战

1. 为什么选择这套技术栈? 这套组合拳在物联网数据处理领域堪称黄金搭档。AWS IoT Core作为设备连接中枢,能稳定处理海量设备连接;Lambda无服务器架构完美承接事件驱动型数据处理;Spring Boot的快速开发特性让业务逻辑实现事半功倍…

2026/8/11 16:01:00 阅读更多 →

最新新闻

Linux 查看磁盘空间的du和df命令

Linux 查看磁盘空间的du和df命令

目录一. du 查看磁盘空间占用情况1.1 -h:以人类可读的格式显示文件大小1.2 👍-s:仅显示总计大小1.3 --max-depth:指定文件夹的层级1.4 👍按从体积大到小的顺序显示文件夹1.5 👍按照从大到小的顺序列出指定文…

2026/8/11 16:41:16 阅读更多 →
显卡驱动更新反复失败怎么办?梳理6种常见原因与完整的排查思路

显卡驱动更新反复失败怎么办?梳理6种常见原因与完整的排查思路

近期不少用户反映,显卡驱动更新过程中总会遇到各种阻碍,要么进度条卡住报错,要么安装后屏幕分辨率异常,甚至直接黑屏。更新失败的背后涉及驱动版本、系统环境、残留文件、安全软件等多重因素,每种情况都有对应的排查路…

2026/8/11 16:41:16 阅读更多 →
DirectX安装失败按什么顺序排查?从报错码反推,逐个解决

DirectX安装失败按什么顺序排查?从报错码反推,逐个解决

不知道你有没有过这种经历:新买的游戏满怀期待地下载安装,双击图标,结果没等来画面,先弹出一长串看不懂的报错。 那种感觉特别难受。什么都准备好了,却被一个弹窗钉在原地,连游戏的大门都进不去。很多时候…

2026/8/11 16:41:16 阅读更多 →
VNC:Ubuntu22.04安装

VNC:Ubuntu22.04安装

Ubuntu(20.04):安装VNC_ubuntu安装vnc-CSDN博客 Ubuntu20.04上安装VNC与Ubuntu22.04安装VNC略有不同,试了很久才终于成功。 1.在Ubuntu22.04的终端里安装tightvncserver sudo apt install tigervnc-standalone-server 2.在Ubuntu22.04的终端里安装gnome-panel</

2026/8/11 16:41:16 阅读更多 →
人机大战or双人五子棋,C语言实现,附源码

人机大战or双人五子棋,C语言实现,附源码

前言C语言实现较简单的五子棋游戏&#xff0c;AI算法比较简单但应该能玩赢普通人的吧&#x1f609;&#xff08;作者比较菜&#xff0c;能玩赢作者&#xff09;现在让我们开始创作创作思路首先&#xff0c;我们要有一个棋盘。用easyx开辟一个窗口&#xff0c;然后加载一张图片&…

2026/8/11 16:41:16 阅读更多 →
mysql原理--单表访问方法

mysql原理--单表访问方法

1.概述 MySQL Server 有一个称为 查询优化器 的模块&#xff0c;一条查询语句进行语法解析之后就会被交给查询优化器来进行优化&#xff0c;优化的结果就是生成一个所谓的 执行计划 &#xff0c;这个执行计划表明了应该使用哪些索引进行查询&#xff0c;表之间的连接顺序是啥样…

2026/8/11 16:40:15 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升&#xff1a;AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析&#xff1a;控制台与Apifox的数据差异 最近在调试一个前后端分离项目时&#xff0c;遇到了一个典型问题&#xff1a;后端服务在本地开发环境控制台能正常输出查询数据&#xff0c;但通过Apifox测试时却返回空结果。这种"控制台有数据&#xff0c;接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友&#xff0c;尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友&#xff0c;都在问我同一个问题&#xff1a;“听说现在用Claude Code这种AI编程工具&#xff0c;小白也能做游戏了&#xff0c;是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑&#xff1a;baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码&#xff08;维护中 rm repo&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片&#xff1a;Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身&#xff0c;而应重视模型外的系统搭建&#xff0c;即Harness。提出AgentModelHarness的实用公式&#xff0c;详细介绍Harness的四个层次&#xff1a;持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →