百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

周六日任务安排表(共16小时)尝试搭建本地知识库

ztj100 2025-03-30 00:18 32 浏览 0 评论


周六(Day 1:8小时)

目标:完成基础环境搭建与数据预处理

时间段

任务

具体步骤

交付物

技术提示

9:00-10:30

环境检查与依赖安装

1. 确认DeepSeek模型可正常加载(python -c "import transformers; print('OK'))
2. 安装必要库:
pip install faiss-cpu sentence-transformers fastapi gradio PyPDF2
3. 创建项目目录结构:
mkdir -p data/{raw,processed} models

环境检查清单
依赖列表

使用virtualenv创建独立环境,避免包冲突

10:30-12:30

样例数据准备与清洗

1. 准备3-5个测试文档(PDF+Markdown)存放到data/raw
2. 编写通用解析脚本:
python
# file_parser.py
def parse_file(path):
if path.endswith('.pdf'):
return extract_text_from_pdf(path) # 复用昨日代码
elif path.endswith('.md'):
return open(path).read()

测试数据集
解析脚本

使用chardet检测文件编码,避免乱码

14:00-16:00

文本分块与向量化

1. 实现动态分块逻辑:
python
from langchain.text_splitter import
RecursiveCharacterTextSplitter
splitter =
RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50
)
chunks = splitter.split_text(text)

2. 生成向量并保存:
python
import numpy as np
vectors = model.encode(chunks)
np.save('
data/processed/vectors.npy', vectors)

分块后的文本文件
向量文件

对中文长句优先按标点分块(句号、问号)

16:00-17:30

FAISS索引构建

1. 创建带ID映射的索引:
python
index = faiss.IndexIDMap(faiss.IndexFlatIP(384))
index.add_with_ids(vectors, np.arange(len(vectors)))

2. 实现增量添加接口:
python
def add_to_index(new_vecs):
start_id = index.ntotal
index.add_with_ids(new_vecs, np.arange(start_id, start_id+len(new_vecs)))

FAISS索引文件

使用IndexIDMap为后续增量更新留出扩展空间


周日(Day 2:8小时)

目标:实现问答接口与基础UI

时间段

任务

具体步骤

交付物

技术难点预警

9:00-11:00

DeepSeek问答接口开发

1. 封装RAG核心逻辑:
python
def generate_answer(question):
# 检索逻辑...
# 构造prompt模板
prompt = f"已知:{context}\n问题:{question}\n答案:"
# 模型生成
return model.generate(prompt, max_length=1024)

2. 添加流式输出支持:
python
for token in model.stream_generate(prompt):
print(token, end='', flush=True)

RAG核心模块

注意控制max_length防止内存溢出

11:00-12:30

FastAPI服务封装

1. 创建基础API端点:
python
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.post("/ask")
def ask_endpoint(question: str):
return {"answer": generate_answer(question)}

2. 添加跨域支持:
pip install fastapi.middleware.cors

可运行的API服务

使用uvicorn部署:
uvicorn main:app --reload --port 8000

14:00-15:30

Gradio交互界面开发

1. 实现基础UI:
python
# ui.py
import gradio as gr
with gr.Blocks() as demo:
question = gr.Textbox(label="请输入问题")
answer = gr.Textbox(label="系统回答")
btn = gr.Button("提交")
btn.click(fn=generate_answer, inputs=question, outputs=answer)
demo.launch()

可交互的Web界面

设置queue()处理并发请求

15:30-17:00

端到端测试与优化

1. 验证完整流程:
- 上传新文档 → 解析 → 索引更新 → 问答测试
2. 性能压测:
ab -n 100 -c 10 http://localhost:8000/ask?question=test
3. 内存优化:
- 添加del vectors及时释放内存

测试报告
优化方案

使用memory_profiler监控内存使用

17:00-17:30

文档整理与下周计划

1. 编写操作手册(README.md)
2. 记录未解决问题清单
3. 制定迭代计划

项目文档

使用typora编写Markdown文档


关键风险应对预案

  1. 内存不足导致崩溃
  2. 应急方案:启用交换分区 sudo fallocate -l 4G /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
  3. 根治措施:限制分块大小(调整为300字符/块)
  4. FAISS索引加载失败
  5. 检查索引版本兼容性:faiss.__version__需与创建时一致
  6. 重建命令:python -c "import faiss; faiss.write_index(index, 'backup.index')"
  7. 中文乱码问题
  8. 统一编码:在解析时强制指定encoding='utf-8'
  9. 异常捕获:
try: text = open(file).read() except UnicodeDecodeError: text = open(file, encoding='gbk').read()

成果验收标准

模块

检查项

验证方法

数据预处理

能正确解析PDF/Markdown并输出干净文本

执行python test_parser.py查看日志

向量检索

输入相似问题能返回相关度TOP3的文档块

人工验证检索结果相关性

问答接口

API响应时间<5秒(无缓存情况下)

使用curl测试并记录响应时间

用户界面

可输入问题并显示带格式的回答

屏幕录制操作过程


按照此计划执行,周末结束时将获得一个可本地运行的知识问答原型系统。建议每完成一个阶段立即commit代码(git commit -m "feat:完成XX模块"),便于问题追溯。

相关推荐

其实TensorFlow真的很水无非就这30篇熬夜练

好的!以下是TensorFlow需要掌握的核心内容,用列表形式呈现,简洁清晰(含表情符号,<300字):1.基础概念与环境TensorFlow架构(计算图、会话->EagerE...

交叉验证和超参数调整:如何优化你的机器学习模型

准确预测Fitbit的睡眠得分在本文的前两部分中,我获取了Fitbit的睡眠数据并对其进行预处理,将这些数据分为训练集、验证集和测试集,除此之外,我还训练了三种不同的机器学习模型并比较了它们的性能。在...

机器学习交叉验证全指南:原理、类型与实战技巧

机器学习模型常常需要大量数据,但它们如何与实时新数据协同工作也同样关键。交叉验证是一种通过将数据集分成若干部分、在部分数据上训练模型、在其余数据上测试模型的方法,用来检验模型的表现。这有助于发现过拟合...

深度学习中的类别激活热图可视化

作者:ValentinaAlto编译:ronghuaiyang导读使用Keras实现图像分类中的激活热图的可视化,帮助更有针对性...

超强,必会的机器学习评估指标

大侠幸会,在下全网同名[算法金]0基础转AI上岸,多个算法赛Top[日更万日,让更多人享受智能乐趣]构建机器学习模型的关键步骤是检查其性能,这是通过使用验证指标来完成的。选择正确的验证指...

机器学习入门教程-第六课:监督学习与非监督学习

1.回顾与引入上节课我们谈到了机器学习的一些实战技巧,比如如何处理数据、选择模型以及调整参数。今天,我们将更深入地探讨机器学习的两大类:监督学习和非监督学习。2.监督学习监督学习就像是有老师的教学...

Python教程(三十八):机器学习基础

...

Python 模型部署不用愁!容器化实战,5 分钟搞定环境配置

你是不是也遇到过这种糟心事:花了好几天训练出的Python模型,在自己电脑上跑得顺顺当当,一放到服务器就各种报错。要么是Python版本不对,要么是依赖库冲突,折腾半天还是用不了。别再喊“我...

超全面讲透一个算法模型,高斯核!!

...

神经网络与传统统计方法的简单对比

传统的统计方法如...

AI 基础知识从0.1到0.2——用“房价预测”入门机器学习全流程

...

自回归滞后模型进行多变量时间序列预测

下图显示了关于不同类型葡萄酒销量的月度多元时间序列。每种葡萄酒类型都是时间序列中的一个变量。假设要预测其中一个变量。比如,sparklingwine。如何建立一个模型来进行预测呢?一种常见的方...

苹果AI策略:慢哲学——科技行业的“长期主义”试金石

苹果AI策略的深度原创分析,结合技术伦理、商业逻辑与行业博弈,揭示其“慢哲学”背后的战略智慧:一、反常之举:AI狂潮中的“逆行者”当科技巨头深陷AI军备竞赛,苹果的克制显得格格不入:功能延期:App...

时间序列预测全攻略,6大模型代码实操

如果你对数据分析感兴趣,希望学习更多的方法论,希望听听经验分享,欢迎移步宝藏公众号...

AI 基础知识从 0.4 到 0.5—— 计算机视觉之光 CNN

...

取消回复欢迎 发表评论: