毕业论文自研推荐模型:基于自有数据库的工具推荐聊天系统开发咨询
毕业论文项目:自有数据库驱动的工具推荐聊天系统方案
整体架构拆解
直接给你搭项目的核心模块,按流程走:
- 自有数据库层:
- 用PostgreSQL建
tools表,字段至少要有:tool_id(主键)、name(工具名)、description(功能描述)、applicable_scenarios(JSON格式,存比如["橱柜组装", "衣柜安装"]这类场景)、usage_tips(使用提示)。另外可以加个user_queries表存用户历史提问,方便后续优化。 - 如果要做语义检索,搭配轻量级向量库Chroma,把每个工具的场景、描述转成向量存进去,快速匹配用户问题。
- 用PostgreSQL建
- 语义检索层:
- 把用户的自然语言提问(比如“怎么组装橱柜”)转成向量,和Chroma里的工具向量做相似度匹配,揪出最相关的3-5个工具。
- 对话生成层:
- 把检索到的工具信息拼进prompt,喂给开源对话模型,让它生成带工具推荐的组装步骤,严格限制只能用你数据库里的工具。
- 交互层:
- 用Streamlit搭个简单的聊天界面,用户输问题,后端处理完返回回答,毕设演示足够用。
技术选型(全是开源、易上手的工具,适合毕设)
- 后端:Python + FastAPI,写接口快,文档全,能快速把检索、模型调用串起来。
- 数据库:PostgreSQL(存结构化工具数据)+ Chroma(向量检索,本地跑不用付费)。
- 模型:
- 语义匹配:用
sentence-transformers的all-MiniLM-L6-v2,轻量、速度快,文本转向量效果够你用。 - 对话生成:用量化版的Llama 2-7B或者Qwen-7B-Chat,用
transformers库或者llama.cpp就能本地部署,16G内存的电脑就能跑。
- 语义匹配:用
- 前端:Streamlit,不用写HTML/CSS,几行Python代码就能搭出聊天界面。
学习路径(按顺序来,别乱跳)
- 先搞定基础工程能力
- 花1-2天学FastAPI,跟着官方文档写个能查询PostgreSQL的接口,比如输入场景关键词,返回对应的工具列表。
- 熟悉PostgreSQL的基本操作:建表、插入数据、写查询语句,比如用
psycopg2或者SQLAlchemy操作数据库。
- 搞定语义检索核心
- 学
sentence-transformers的基本用法:把文本转成向量,计算相似度。然后把你数据库里的工具场景、描述批量转成向量,导入Chroma。 - 写个简单的检索函数:输入用户问题,转成向量,从Chroma里拉Top3相关工具。
- 学
- 学会RAG(检索增强生成)
- 了解RAG的基本逻辑:用检索到的外部数据(你的工具库)约束模型生成内容,避免瞎编。
- 设计prompt模板,比如:
你是专业的DIY工具助手,现在用户问:{user_question} 请根据以下提供的工具信息,给出详细的组装步骤和对应的工具推荐,**只能使用下面列出的工具,禁止提到任何不在列表里的工具**: {retrieved_tools} 回答格式:先讲组装步骤,再列工具列表(工具名+简要用途) - 本地部署量化版的对话模型,测试prompt效果,调整模板直到生成的回答符合要求。
- 整合所有模块
- 把检索函数、模型调用函数塞进FastAPI接口里,前端用Streamlit写个聊天框,调用后端接口,完成端到端的流程。
- 优化细节
- 加个简单的校验:生成的回答里提到的工具,必须在你的数据库里存在,用字符串匹配或者查
tools表的方式验证,避免模型瞎编。 - 优化检索准确率:把工具的
applicable_scenarios拆成更细的关键词,比如“橱柜组装-打孔”“橱柜组装-固定”,提升匹配精度。
- 加个简单的校验:生成的回答里提到的工具,必须在你的数据库里存在,用字符串匹配或者查
同类项目参考思路
- 比如面向装修工人的工具推荐机器人:用户输入“装吊顶需要啥工具”,机器人从自有库中匹配电钻、膨胀螺丝、水平仪等,同时给出安装步骤。
- 简化版实现流程:
- 整理工具数据,导入PostgreSQL和Chroma。
- 用户输入问题→转向量→Chroma检索相关工具。
- 把问题+工具信息拼prompt→传给对话模型→生成回答。
- 返回回答给前端展示。
避坑提醒
- 别从零训练模型:毕设时间有限,开源预训练模型足够用,从零训不仅费时间,效果还不如现成的。
- 模型量化:用4-bit或8-bit量化的模型,不然普通电脑跑不动,
transformers库的bitsandbytes插件就能实现。 - 数据要规整:工具的场景、描述尽量标准化,别写太模糊的内容,不然检索匹配会不准。
内容的提问来源于stack exchange,提问作者danil-losev
相关产品推荐
相关产品推荐

