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

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

ztj100 2025-03-30 00:18 1 浏览 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模块"),便于问题追溯。

相关推荐

你不知道的PostgreSQL数据库安装及实现跨库查询PG和Oracle

PG作为近几年最火热的关系型数据,已经被很多开发者所使用,尤其是5G网络普及完毕后,IOT和AI的应用场景下,数据的读写速度要求非常高,MYSQL已经开始不能满足高强度的数据吞吐(这里有争议,这里只是...

从小白到专家 PG技术大讲堂 - Part 3:PG建库与使用

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注...

最全总结,聊聊 Python 数据处理全家桶(PgSQL篇)

来源:AirPython作者:星安果1.前言大家好,我是安果!PgSQL,全称为PostgreSQL,是一款免费开源的关系型数据库相比最流行的Mysql数据库,PgSQL在可靠性、数据完整性...

Excel函数的基本知识和使用,带你迅速掌握函数,可直接套用!

文章最后有彩蛋!好礼相送!...

Excel 小计、总计公式全都能自动计算新增行,套路公式存好

很多同学会觉得Excel单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解Excel的各个知...

Excel查找最后一条记录,3种方法,你会么?

举一个工作中的例子,左边是商品的出库记录,其中的两列数据,现在需要快速找出最后一次出库的时间1、vlookup公式因为每种商品都会有多条出库记录,所以当我们使用vlookup公式时,它只会查找匹配到第...

DeepSeek装进IDEA,全网最全操作指南一篇详解!编程效率大幅提升

在IDEA插件中搜索“通义灵码”,即可获取到AI插件:点击“Install”按钮即可快速安装:安装可能需要一点点时间,等待即可。安装成功以后,在IDEA窗口的右下角,会提示你登录“...

Excel快速合并内容并换行(excel怎么合并后换行)

#一张图记录元旦假期#...

(六)MyBatis面试通关宝典:让你在面试中脱颖而出的关键

一、MyBatis中的工作原理...

Excel数据透视表,逆透视,你会么?

举个工作中的例子来说明,老板发给你左边的表格,让你快速转换成右边的样式,如下所示:1、数据透视表正常情况下,我们都是从右边的数据明细,使用数据透视表,得到左边的结果,简单回顾一一下,我们选中数据区域,...

掌握 Excel 「删除重复项」的4种方法,少做 80%的无用功!

在Excel中,删除重复项是数据清理和整理的常见任务,有多种方法可以实现这一目标。...

一分钟教会你在Excel里面接入DeepSeek,我们一起帮哪吒逆天改命

01...

128G手机还能用两年!微信这新功能突然来了

爽啊,微信最近搞了两个实用性拉满的新功能。不知道大伙有没有碰上过这么个情况。...

Vlookup公式用法大全,建议收藏备用

上班打工人必学的VLOOKUP函数公式,花费2个小时,总结全了,一起来学1、VLOOKUP公式基本用法VLOOKUP公式有4个参数,使用用法:=VLOOKUP(查找值,查找区域,返回第几列,查找方式)...

mariadb数据库使用SQL命令操作表-增删改查

1.DML基础语法DML(DataManipulationLanguage)...

取消回复欢迎 发表评论: