JACIN Blog

深度的 AI 应用开发者

专注 AI 应用开发、Python 后端与工程实践,持续记录大模型落地、工具构建与真实项目经验。

183篇已发布
主题索引
查看全部分类
全部文章
183
AI 大模型开发
7 分钟

tei-rerank 部署重排模型bge-reranker-v2-m3

这份记录聚焦在用 Hugging Face Text Embeddings Inference 的 CPU 镜像部署 BAAI/bge-reranker-v2-m3 重排模型,场景是为检索结果增加一个独立的 rerank 服务,而不是普通 embedding 服务。流程先通过 snapshot_download 将模型完整下载到本地目录,再安装 optimum、onnx、onnxruntime,并用 ORTModelForSequenceClassification.from_pretrained(export=True) 将 PyTorch 模型导出到模型目录下的 onnx 子目录,同时保存 tokenizer。docker-compose 配置的关键点包括使用 ghcr.io/huggingface/text-embeddings-inference:cpu-1.5,挂载本地模型目录到 /data/rerank,开放 38190:80 端口,并通过 --model-id 指向容器内路径,配合 --auto-truncate 和 --dtype float32 启动服务。文章特别强调 shm_size: 1g 的必要性,因为 Docker 默认共享内存只有 64MB,AI 推理程序在并发或大矩阵数据传输时可能因共享内存不足直接 Bus error 崩溃。最后用 /rerank 接口测试“我想买一个手机”与三星、苹果、联想笔记本三段文本的相关性排序,结果显示手机相关文本得分约 0.3,而笔记本得分接近 0.0001。读者可以从中获得一套可复现的 TEI rerank 部署步骤,并理解重排模型更应关注候选项之间的相对差距和排序效果,而不是孤立解读绝对分值。

AI 大模型开发
2 分钟

本地部署 ollma+ qwen 7B大模型

这是一份面向本机 Docker 环境的 Ollama 部署记录,目标是在本地启动可调用的 Qwen2.5 大模型服务,并通过接口验证生成能力。正文给出 docker-compose.yml 的核心配置,包括 11434 端口映射、./ollama_data 持久化模型数据、容器自动重启,以及 OLLAMA_KEEP_ALIVE、OLLAMA_NUM_PARALLEL、OLLAMA_MAX_LOADED_MODELS、OLLAMA_ORIGINS 等运行参数。资源部分显式限制容器最多使用 18G 内存,同时用常驻内存、4 路并发和最多加载 2 个模型来平衡响应速度与本机资源占用。模型操作通过 docker exec 进入 ollama 容器执行 ollama run qwen2.5:7b,也补充了 qwen2.5:14b 的可选尝试,并提示 14B 的 4bit 量化大约需要 9GB 内存。文章还区分了模型文件存放在硬盘与按请求 model 参数加载到内存的行为:请求 7B 会加载 7B,请求 14B 时可能卸载 7B 再加载 14B。最后用 curl 调用 http://localhost:11434/api/generate,指定 qwen2.5:7b、prompt 和 stream 参数,作为部署是否可用的最小验证,适合需要快速搭建本地中文大模型 API 的开发者参考。

AI 大模型开发
7 分钟

搭建tei-embedding 与配置bge-m3 文本模型

这篇笔记聚焦于将 BAAI/bge-m3 文本向量模型部署为本地 Hugging Face TEI embedding 服务,适用于需要离线或内网提供语义向量接口的检索、RAG 和相似度计算场景。流程先用 huggingface_hub 的 snapshot_download 下载模型到指定绝对路径,并特别设置 local_dir_use_symlinks=False 以保存真实文件,同时启用断点续传,避免 Docker 挂载后因软链接或缓存路径导致模型不可用。部署部分给出 Docker Compose 配置,使用 ghcr.io/huggingface/text-embeddings-inference:cpu-1.5 镜像,将宿主机模型目录挂载到容器 /data/bge-m3,并通过 --model-id 指向该路径触发离线加载。配置中还清空代理环境变量、设置 no_proxy=*,并指定 cls pooling、最大客户端 batch size 为 32、dtype 为 float32,强调在 CPU 版本下以稳定可用为目标。验证环节先通过 curl 调用 127.0.0.1:8080/embed,若返回一组浮点向量即可确认容器、端口、模型加载和推理链路正常;若出现 Connection refused,则优先检查容器是否启动和端口映射。最后用 requests 调用接口、NumPy 计算三句话向量的余弦相似度,结果显示“男人吃苹果”和“吃水果”的相似度高于与“天气”的相似度,从语义区分能力上确认服务可用于后续文本向量化任务。

Python 开发
1 分钟

ubuntu 使用 Miniconda

这份笔记记录了在 Ubuntu 64 位环境中安装和初始化 Miniconda 的最小流程,适合需要为 Python 项目隔离依赖、但不想安装完整 Anaconda 的用户。正文先给出通过 wget 下载 Miniconda Linux x86_64 安装脚本、再用 bash 执行安装的命令,覆盖了从获取安装包到启动安装器的基本入口。安装完成后,作者特别建议关闭默认自动进入 base 环境,并使用 conda config --set auto_activate_base false 避免 shell 启动时污染全局命令行环境。由于 Anaconda 更新了服务条款,笔记还补充了通过 conda tos accept 分别接受 pkgs/main 和 pkgs/r 官方频道条款的命令,否则后续下载包可能受阻。环境管理部分以运行 Ollama 脚本或 Milvus Python 代码为例,建议创建名为 ai_tools 的 Python 3.10 环境,并给出创建、激活、退出和查看已安装包的常用命令。这更像是一份快速备忘清单,重点在可直接复制执行的配置步骤,适合 Ubuntu 上进行 AI 工具、向量数据库或其他 Python 实验项目的开发者参考。

部署milvus 向量数据库与可视化attu
AI 大模型开发
11 分钟

部署milvus 向量数据库与可视化attu

这份笔记记录了用 docker-compose 搭建 Milvus Standalone 向量数据库及 Attu 可视化界面的完整过程,场景是已有或单独部署 MinIO 后,将 Milvus、Etcd、Attu 接入同一个外部 Docker 网络。配置部分分别给出 MinIO 的端口、数据卷和 root 账号密码设置,以及 Milvus v2.5.0 连接 Etcd、外部 MinIO、指定 bucket、暴露 19530 与 9091 端口的 compose 示例,同时提醒需要按实际情况修改 MINIO_ACCESS_KEY_ID 和 MINIO_SECRET_ACCESS_KEY。文章特别记录了启动时因鉴权配置导致报错的处理路径:先 down 掉容器、删除旧 milvus.yaml,下载官方 v2.5.0 配置文件后将 authorizationEnabled 从 false 改为 true,再重新 docker compose up -d。Attu 通过 MILVUS_URL 指向 standalone:19530,并将 Web UI 映射到 8000 端口;Milvus 开启鉴权后的默认账号为 root,默认密码为 Milvus,登录后可在界面中修改密码。后半部分用“计算中心、对象仓库、元数据记账本、前台界面”的分工解释 milvus-standalone、MinIO、Etcd 和 Attu 的职责,强调向量数据与索引主要落在 MinIO,集合结构和文件归属依赖 Etcd。它适合需要快速搭建本地或服务器端向量数据库实验环境、并希望理解各容器依赖关系和持久化风险的开发者参考。

计算机知识
3 分钟

Github Action 官方托管 与自托管区别

这篇笔记围绕 GitHub Actions 的官方托管 Runner 与 Self-hosted Runner 做取舍说明,重点回答默认机器规格、是否自动扩容、计费方式和运行环境差异。官方 Linux 标准 Runner 通常是 2 vCPU、7GB 内存、14GB SSD,Windows 标准环境也接近 2C7G,macOS 规格相对更高;这些资源不会随构建负载动态增加,任务内存不足时会失败,只有手动选择并付费配置 Larger Runners 才能提升规格。Self-hosted Runner 不消耗 GitHub Actions 每月分钟数,即使长期运行也不会在 GitHub 侧产生分钟账单,但服务器、网络和维护成本需要自行承担。对比部分指出,官方 Runner 每次任务结束后销毁虚拟机,环境纯净、维护成本低,更适合公开仓库;自托管环境持久,能保留 Docker 镜像、node_modules 等本地缓存,构建速度可能明显提升。代价是需要自己安装和维护 Docker、Git、系统环境,并定期清理磁盘,否则容易被缓存和镜像占满。安全边界尤其关键:公开仓库不应随意使用自托管 Runner,因为恶意 PR 可以修改执行脚本并控制服务器;而在内网集成测试、访问私有资源或需要自定义并发能力的场景,自托管才更有优势。

服务器与部署
1 分钟

Nginx 配置 非域名 443 端口的自签证书

这是一篇面向 Nginx HTTPS 默认入口的防探测配置笔记,目标是处理直接通过服务器 IP 访问 443 端口时可能暴露真实站点证书信息的问题。做法先使用 OpenSSL 生成一个有效期较长、CN 设置为 AccessDenied 的自签证书,并把生成的 fake.crt 与 fake.key 放到 Nginx 可读取的位置。随后在 default 配置中声明同时监听 80 和 443 的 default_server,用 server_name _ 承接未匹配到具体域名的请求,并将该默认虚拟主机绑定到这张“假证书”。这样扫描器或访问者如果不带正确域名访问 IP,在 TLS 阶段看到的不是生产站点证书,而是自签证书中的 AccessDenied;连接建立后,Nginx 再通过 return 444 直接断开请求。文章还给出一个验证思路:到 Censys 按 IP 搜索,检查公开扫描结果中是否仍能反查到真实域名。该配置适合希望降低证书透明度、互联网扫描或 IP 反查带来的域名暴露风险的运维与站点维护者,但它只针对默认入口和证书展示层面,不能替代完整的访问控制与资产隐藏策略。

nginx
Go 开发
2 分钟

Cursor 配置 Go debug 模式

这份速查记录聚焦在 Cursor 中为 Go 项目启用调试模式,配置入口是项目目录下的 .vscode/launch.json。正文给出两套可直接复制的 launch 配置:第一套使用 type 为 go、request 为 launch、mode 为 auto,并将 program 设置为 ${fileDirname},适合从当前文件所在目录快速启动,也提示可改为 workspace 下的 main.go 或 cmd/server 等入口目录。第二套配置将 mode 显式改为 debug,以 ${workspaceFolder}/main.go 作为程序入口,同时设置 cwd、dlvToolPath、环境变量、showLog 和 verbose trace,便于在开发环境中固定调试参数并输出更详细的 Delve 日志。需要注意的是,示例里的 dlvToolPath 使用了本机绝对路径,迁移到其他机器或团队项目时应按实际安装位置调整;环境变量如 GIN_MODE、GOPROXY、GOEXPERIMENT 也应与项目运行要求匹配。它适合已经具备 Go、Cursor/VS Code Go 调试支持和 dlv 基础环境的开发者,用来快速搭建单入口项目或当前目录入口的调试配置。

读书笔记
4 分钟

《1亿人的小红书:时机、摇摆和决心(轻商业)》----话语摘录

这组摘录与点评围绕晚点 LatePost 对小红书成长史的记录展开,重点不在复述公司传记,而是借由若干关键片段理解小红书如何从 2013 年的 PDF 攻略、海外电商尝试,转向以 UGC 为核心的生活社区。内容抓住了几个有辨识度的线索:大量用户并非只顺着信息流消磨时间,而是把小红书当作生活经验搜索引擎;平台内部也以搜索活跃用户等指标观察这种使用方式。摘录还强调小红书与抖音、微博等效率型媒体产品的差异,前者更重视人与内容、人与人之间的关系和“温度”,而不是单纯追求刷取时长与推荐效率。点评部分补充了读者视角下的判断,包括早期增长经验不足、社区团队技术资源有限、创始人毛文超低调、女性社区长期被外部投资人低估等细节。文章的价值在于把小红书的崛起放回多次摇摆、资源约束和定位选择之中,而不是简单归因于流量红利。适合关注内容社区、消费互联网产品定位、中文互联网信息生态变化,以及想从案例中理解平台增长边界的读者阅读。

读书笔记
4 分钟

《只有医生才知道》-----话语摘录

这组微信读书摘录聚焦余一生《只有ICU医生知道》中的医疗叙事和读者批注,核心不是重症医学技术细节,而是ICU医生在疾病、死亡、家庭关系与幸存人生之间形成的观察。摘录反复触及ICU的矛盾意义:有些抢救注定无法改变结局,但它仍可能为病人和家属争取机会,甚至提供“好好告别”的时间。书中也提醒医生不能只以“救活”为终点,还要考虑镇静、镇痛药物依赖等后续风险,以及病人活下来之后怎样重新面对恐惧、成瘾和普通生活。亲子期待、外貌焦虑、家人患病时医生的无力感等段落,把医学现场延伸到更普遍的人生处境:人如何被期待塑形,又如何在不完美和无解中寻找继续生活的理由。摘录还保留了读者关于婚前体检、学医无助感、外貌机会等即时感想,使这份笔记更像一次围绕生死、身体和关系的个人阅读记录。适合想从医生视角理解ICU、人性关怀与临终尊严的读者,也适合作为了解这本书情绪基调和主题边界的导读。

读书医学
读书笔记
1 分钟

关于“读书笔记”类别

“读书笔记”类别用于归纳围绕书籍阅读形成的持续性记录,重点不只是保存摘录,而是沉淀章节理解、概念梳理、观点回应和由阅读引发的延伸思考。它适合承载那些以某本书或某组阅读材料为核心来源的内容,帮助后续检索、复盘和串联主题,而不是让阅读收获散落在随笔或临时记录中。与技术教程、项目实践、问题排查等类别相比,这一类别的判断依据应放在阅读对象和理解过程上,而非操作步骤或工程结果。归类时可以关注文章是否围绕书籍内容展开,是否包含摘录、结构化整理、批注式评论或阅读后的知识再组织。若内容已经脱离书籍本身,转向独立观点、实践方法或具体方案,则更适合放入对应主题类别。该类别的价值在于为阅读型知识建立稳定边界,使书籍输入、个人理解和后续应用之间形成可追踪的知识链路。

20251213-最新 gemin image pro 最强提示词
AI见闻
4 分钟

20251213-最新 gemin image pro 最强提示词

这则笔记记录了一段外网流传的 Gemini Image Pro 结构化提示词,形式上以 JSON 分层描述“带参考图的文本生成图像”任务,重点展示如何把画幅、参考图匹配、主体设定、场景环境、光照和摄影规格写进同一套提示词框架。正文中的模板将输出约束设为 9:16 竖屏,并启用严格视觉匹配,试图让生成结果贴近参考图且保持高清、写实、手机镜前自拍的观感。提示词主体围绕卧室床边、镜面反射、手机拍摄、自然灯光、凌乱床铺和小红书式抓拍审美展开,同时用负面词排除卡通、插画、3D 渲染、畸形手部和多余肢体等常见生成问题。它的可读价值不在于具体画面设定,而在于提供了一个拆解图像生成需求的结构样例:先写技术边界,再写人物、动作、服装、环境、摄影质量与反向限制。需要注意的是,原示例包含带未成年人感的人物设定和明显不适合直接复用的性感化服装描述,作为提示词工程参考时应抽取结构方法,避免照搬具体内容。对于研究图像生成提示词、参考图约束和写实摄影风格控制的读者,这篇笔记更适合当作反面风险与结构化写法并存的案例来看。

文章归档
183