今天是自学大模型的第一天(sanjose)

【从零到RAG】用Python实现本地AI问答系统(Transformer + FAISS + HuggingFace)In this line of code, minValueIndex is a variable that is assigned the return value of self. searchMin (nums, target). Here, self refers to the instance of the current class, and searchMin is a method of that instance. This method takes two parameters: nums and target.

1.Built a local conversational AI assistant with context memory and retrieval-augmented generation (RAG) using Hugging Face Transformers

🚀 从零实现本地 RAG 系统:Transformer → HuggingFace → 向量检索(完整实战)

📌 一、背景

今天我从 Transformer 基础 出发,逐步完成了一个完整的:

💥 本地 RAG(Retrieval-Augmented Generation)问答系统

整个过程从:

  • 手写 Mini Transformer

  • 到 Hugging Face 调用大模型

  • 再到 FAISS 向量检索

最终实现了:

✅ 基于自定义知识库的智能问答系统(本地运行)


🧠 二、核心知识梳理

1️⃣ Transformer 基础

Transformer 的核心是:

  • Self-Attention(自注意力)

  • Feed Forward Network

  • 多层堆叠

在 GPT 类模型中:

❗ 使用 Masked Self-Attention

作用:

👉 防止模型"看到未来",保证自回归生成


2️⃣ GPT vs BERT(关键区别)

模型 类型 能力
GPT Decoder-only 生成
BERT Encoder-only 理解

👉 后面做 RAG:

  • BERT → 做 embedding

  • GPT → 做生成


3️⃣ LLM 的本质

复制代码
Prompt → Transformer → Next Token → Next Token...

👉 所有大模型本质都是:

💥 预测下一个词


🚀 三、从 HuggingFace 开始(真实模型)

我先用:

复制代码
from transformers import AutoTokenizer, AutoModelForCausalLM

加载模型:

复制代码
model = AutoModelForCausalLM.from_pretrained("microsoft/phi-2")

实现:

👉 本地文本生成 / 简单聊天


⚠️ 遇到的问题

❌ GPT2 复读问题

原因:

  • GPT2 是"续写模型"

  • 不适合问答格式

解决:

复制代码
Question:
Answer:

或者直接换模型(phi)


🧠 四、RAG 核心思想

传统 LLM:

复制代码
用户问题 → 模型回答(可能胡说)

RAG:

复制代码
用户问题 → 检索知识 → 再回答

👉 核心流程:

复制代码
Query → Embedding → Vector Search → Context → LLM

🔥 五、实现步骤(重点)


1️⃣ 文本 → 向量(Embedding)

使用:

复制代码
pip install sentence-transformers

代码:

复制代码
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("all-MiniLM-L6-v2")

embeddings = model.encode([
    "Machine learning is a field of AI.",
    "Transformers use self-attention."
])

2️⃣ FAISS 向量检索

复制代码
pip install faiss-cpu

import faiss
import numpy as np

index = faiss.IndexFlatL2(384)
index.add(np.array(embeddings))

query_vec = model.encode(["What is transformer?"])
D, I = index.search(np.array(query_vec), 2)

3️⃣ 构建 RAG 系统

核心逻辑:

复制代码
docs = retrieve(query)

prompt = f"""
Context:
{docs}

Question: {query}
Answer:
"""

4️⃣ 长文本处理(关键升级)

问题:

👉 文档太长,embedding效果差

解决:

👉 chunking(切块)

复制代码
def chunk_text(text, chunk_size=300, overlap=50):
    ...

💥 六、最终系统结构

复制代码
用户问题
   ↓
Embedding(BERT类)
   ↓
FAISS 检索
   ↓
拼接上下文
   ↓
LLM(phi-2)
   ↓
回答

🧪 七、效果展示

输入:

复制代码
What is FAISS?

输出:

复制代码
FAISS is a library for efficient similarity search.

输入:

复制代码
What is the difference between BERT and GPT?

输出:

复制代码
BERT is an encoder-only model, GPT is decoder-only.

🧠 八、关键收获

今天最大的收获不是代码,而是理解:

💥 1. LLM 不等于智能

复制代码
没有知识 → 会胡说

💥 2. RAG 才是落地关键

复制代码
检索 + 生成 = 可控 AI

💥 3. Transformer 三大体系

复制代码
Encoder(理解)→ BERT
Decoder(生成)→ GPT
Encoder-Decoder → T5

🚀 九、下一步计划

  • 支持 PDF 文档读取

  • 加入多轮对话 memory

  • 使用更强 embedding(bge-large)

  • 接入向量数据库(Chroma / Pinecone)


🎯 总结

今天从:

复制代码
Transformer 理论
→ HuggingFace 模型
→ 向量检索
→ RAG系统

完成了一条完整链路。

👉 从"学 AI"迈向"做 AI 系统"。


🔥 一句话总结

💥 RAG = 让大模型"有依据地说话"

相关推荐
AlienZHOU3 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
科技苑3 小时前
Python简单网络爬虫教程
爬虫·python
狗头大军之江苏分军6 小时前
《潮水漫过十七岁》开学了
后端
Patrick在香港6 小时前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
苏三说技术6 小时前
如何看待GPT-6在UP主众测中碾压夺冠?它是现在最强大模型吗?
后端
mldong7 小时前
一份 JSON,一条能跑的审批流:把报销流程送上工作流引擎
后端·架构
wno7047 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
Captaincc7 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
YsyaaabB7 小时前
Python 数值分析
python
阿洛学长7 小时前
计算机二级 Python 基本操作题(15 分)真题笔记(0101 ~ 1903 全套)
python·pycharm