循环、迭代器、生成器
一、循环(Loop)本质循环是一种控制结构,用于重复执行代码块。它本身不是数据结构,而是一种语法机制。 常见形式123456789# 1. for 循环(遍历可迭代对象)for item in [1, 2, 3]:    print(item)# 2. while 循环(基于条件)i = 0while i < 3:    print(i)    i += 1  适用场景 需要重复执行相同或相似的操作 遍历容器中的元素(如列表、字典) 实现需要终止条件的逻辑(如用户登录验证)  优势 简单直观,易于理解和使用 适用于大多数重复操作场景  劣势 当处理大量数据时,可能占用大量内存(如生成全量数据列表) 无法暂停或恢复执行流程  二、迭代器(Iterator)本质迭代器是实现了迭代器协议的对象(即包含 __iter__() 和 __next__() 方法)。它是一种数据访问方式,允许你按需逐个访问元素。 核心方法 __iter__():返回迭代器自身 __next__():返回下一个元素,若没有元素则抛出 StopIteration 异常  示例1234567my_list =...
RAG-什么是RAG
...
RAG-向量模型选择
引言在检索增强生成(Retrieval-Augmented Generation, RAG)系统中,向量模型的质量直接决定了系统的检索效果,进而影响最终生成内容的相关性和准确性。本文将深入探讨如何评估和选择适合RAG系统的向量模型,如有不足请指正。 一、向量模型的核心作用向量模型(嵌入模型)在RAG系统中承担着将文本转化为数值向量(嵌入)的关键任务,其质量影响以下核心环节:  语义表示能力:决定模型是否能准确捕捉文本的深层含义 检索相关性:影响系统找到与查询最相关文档的能力 计算效率:直接影响系统的响应速度和资源消耗 领域适应性:决定模型在特定领域的表现效果  二、主流向量模型类型1. 通用预训练模型 示例:OpenAI的text-embedding-ada-002、Cohere的embed-english-v3.0 特点:在大规模通用语料上预训练,适合大多数通用场景 优势:开箱即用,无需额外训练  2. 领域专用模型 示例:BioBERT(生物医学)、Legal-BERT(法律) 特点:在特定领域数据上训练或微调 优势:在专业领域表现更优  3....
LLM-长文本问题
引言随着大语言模型(LLM)的广泛应用,处理超长文本输入已成为开发者面临的常见问题。当文本长度超过模型的上下文窗口限制(如GPT-4的32k token或Claude的100k token),或者即使长度未超限但内容过于复杂时,都需要特殊的处理策略。本文将分析现有解决方案,评估其适用场景,并介绍前沿的处理技术。(部分内容由大模型总结,请谨慎辨别) 一、长文本处理的核心挑战1. 技术限制 上下文窗口限制:主流模型的token上限  graph LR   A[模型类型] --> B[GPT-4-32k]   A --> C[Claude-100k]   A --> D[LLaMA2-4k] 注意力机制开销:Transformer的O(n²)复杂度 信息衰减现象:模型对中间位置内容理解较弱  2. 业务影响 关键信息丢失:超出窗口部分被截断 语义连贯性破坏:拆分导致上下文断裂 推理质量下降:复杂论证难以维持  二、现有解决方案深度评估1. 检索增强生成(RAG)技术实现: 123456789101112131415from langchain.embeddings import...
LLN-训练与微调
为什么需要多种微调方法?在大模型应用落地的过程中,预训练后的微调(Fine-tuning)是使模型适应特定任务的关键环节。随着技术的发展,研究者们提出了从传统的监督微调(SFT)到基于人类反馈的强化学习(RHLF),再到最新的直接偏好优化(DPO)等一系列方法。本文将系统解析6种主流微调技术的工作原理、适用场景及实践要点,根据具体需求选择最佳方案。 一、基础方法:监督微调(SFT)1.1 技术原理**监督微调(Supervised Fine-Tuning)**是最基础的微调方法,使用标注数据集通过标准交叉熵损失进行训练: 1L_SFT = -Σ log P(y|x;θ) 其中(x,y)是输入-输出对,θ是模型参数。 1.2 典型流程 准备高质量标注数据 在预训练模型上继续训练 使用学习率衰减策略(如cosine衰减)  1.3 优缺点分析优势:  实现简单,计算成本低 对小规模数据适应良好 可复用传统NLP训练流程  局限:  依赖大量标注数据 容易过拟合 无法学习复杂偏好  适用场景:任务明确、有充足标注数据的领域适应 二、高效微调技术:参数高效微调(ReFT)2.1...
显存计算
了解大模型的显存占用在大型语言模型(LLM)领域,经常看到”7B”、”13B”、”70B”这样的参数规模描述,这些数字直接关系到模型运行所需的显存资源。对于开发者、研究人员和AI应用部署者来说,准确计算模型显存需求是:  硬件采购的基础 部署方案设计的依据 模型选择的关键因素 性能优化的起点  本文将系统性地解析大模型显存占用的计算方法,包括全精度加载和量化加载的不同场景。 一、基础概念:模型参数与显存的关系1.1 参数量的表示方法 1B参数 = 10亿(1,000,000,000)个参数 常见模型规模: 7B (70亿,如Llama 2-7B) 13B (130亿,如Llama 2-13B) 70B (700亿,如Llama 2-70B)    1.2 参数数据类型与显存占用现代大模型通常使用以下数据类型:    数据类型 位数 字节数 常见用途    FP32 32 4 全精度训练   FP16 16 2 混合精度训练/推理   BF16 16 2 训练(动态范围更大)   INT8 8 1 量化推理   INT4 4 0.5 极端量化   二、全量加载显存计算2.1...
RAG-Chonkie实践理解分块
在构建高效的检索增强生成(RAG)系统时,文本分块(Chunking)是决定系统性能的关键预处理步骤。今天我们将深入探讨文本分块的重要性,并详细解析Chonkie库提供的五种分块方法,帮助开发者选择最适合自己场景的分块策略。  一. 为什么文本分块如此重要?在RAG流程中,分块是数据预处理的核心环节,直接影响:  检索精度:过大的块会引入噪声,过小的块丢失上下文。 生成质量:LLM需要连贯的上下文理解用户查询。 计算效率:合理分块减少无效计算。  错误分块的典型问题 案例1:将“巴黎是法国的首都。柏林是德国的首都”切分为: Chunk1: “巴黎是法国的首都。柏林” Chunk2: “是德国的首都”    → 检索“德国首都”时可能漏检Chunk1。 案例2:将一篇学术论文的“方法论”和“结论”合并为一个块→ 检索具体方法细节时引入无关信息。   二、Chonkie的五种分块方法详解1....
docker-compose与k8s对比
在现代容器化生态中,Docker Compose 和 Kubernetes(K8S) 是两个最常用的编排工具,但它们的设计目标和适用场景截然不同。本文将深入分析它们的异同、优劣势及互补关系,帮助你做出合理的技术选型。  1. 核心定位对比Docker Compose:轻量级单机编排 定位:定义和运行多个关联容器(如 Web + DB + Cache)。   适用场景:   本地开发环境   单机测试部署   快速原型验证      Kubernetes:企业级分布式编排 定位:管理跨多节点的大规模容器集群。   适用场景:   生产环境微服务架构   高可用、自动伸缩需求   混合云/多云部署       类比:    Docker Compose 像“乐高说明书”,指导如何组装一组容器。   Kubernetes 像“智能机器人流水线”,自动管理全球工厂的乐高生产。      2. 功能对比   功能 Docker Compose Kubernetes    部署单元 容器组(Services) Pod(1个或多个容器)   伸缩能力 手动(docker-compose up...
docker-如何在容器内使用显卡资源
1. 为什么需要 NVIDIA Container Toolkit?在 Docker 中运行深度学习、AI 计算或图形渲染应用时,通常需要调用 GPU 加速。但默认情况下,Docker 容器无法直接访问宿主机的 NVIDIA 显卡,这时就需要 NVIDIA Container Toolkit(原名 nvidia-docker)来打通容器与 GPU 之间的桥梁。 核心功能 允许 Docker 容器直接访问宿主机上的 NVIDIA GPU。 自动挂载 GPU 驱动和 CUDA 库到容器内。 兼容主流容器运行时(Docker、containerd、Podman)。   2. NVIDIA Container Toolkit 组件解析该工具包主要由以下组件构成:    组件名称 作用    nvidia-container-toolkit 核心组件,负责在容器启动时注入 GPU 相关设备与驱动。   libnvidia-container 底层库,处理容器与 GPU 的交互逻辑。   nvidia-container-runtime 替换 Docker 默认的 runc,支持 GPU...
docker-在线安装docker脚本
这里直接给出脚本内容,脚本内容中已经包含了添加阿里云镜像源的步骤,直接运行即可。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#!/bin/bash# 在线安装 Docker 脚本(使用阿里云镜像源)# 适用于 Ubuntu 系统# 检查脚本是否以 root 用户运行if [[ $EUID -ne 0 ]]; then    echo "该脚本需要以 root 用户运行!"    exit 1fiecho "正在确认安装curl命令"apt-get install curl -y# 检查是否已安装 Dockerif command -v docker &>/dev/null; then    echo "检测到系统中已安装 Docker。"    read -p "是否需要卸载并重新安装 Docker?...












