想快速查电影信息?想根据心情挑片?想问“《盗梦空间》的主演是谁”,或者“我最近心情不好,看什么电影”?
FilmGPT 可以一站搞定!今天,我们不啰嗦一行行代码,而是深度拆解它的实现原理和技术亮点,让你看懂它是怎么聪明起来的——甚至比你那堆影评软件更懂电影。
一、FilmGPT 是什么?
FilmGPT 是一个 结合大模型(LLM)+ 向量数据库(Vector DB)+ RAG(知识增强生成) 的智能电影问答助手。
功能概览:
-
电影问答
- 可以问电影导演、主演、评分、奖项,甚至问“导演拍这部电影是不是脑洞大开?”
-
情绪化推荐
- 心情不好?FilmGPT 会贴心推荐 2~3 部电影,让你瞬间回到“电影世界治愈模式”。
-
知识库自建
- 从 IMDb、Wikipedia 等权威网站爬取电影内容
- 切块、向量化后存入 Supabase 向量数据库
-
中文输出 + Markdown 渲染
- 前端直接可读,还带格式美观的列表和链接
小白理解:FilmGPT 就像你的私人电影顾问,不管你想查电影信息,还是心情低落想看片,它都能秒懂你。
二、前端:聊天界面的设计
前端使用 React + Tailwind + Zustand,主要特点:
- ChatInput:用户输入问题的地方,就像你对助理说话一样
- ChatOutput:展示聊天记录,支持流式显示,边生成边看答案
- useChat 自定义 Hook:管理输入、消息列表和请求状态
知识点深度解析:
-
自定义 Hook 是啥?
- 想象一下,你有个贴身小秘书,帮你记住聊天记录、输入框内容、以及什么时候按“发送”
- useChat 就是这个秘书,把状态和逻辑全包起来,前端组件只负责显示和交互
-
流式显示为什么重要?
- 大模型回答可能需要几秒钟,如果一次性显示完整回答,你可能会心里默念:“它还活着吗?”
- 边生成边显示,用户体验直逼真人聊天
总结一句:前端是“聊天窗口”,useChat 是小秘书,ChatInput 是你说话的嘴,ChatOutput 是你看到答案的眼睛。
三、后端:RAG + 向量检索的魔法
FilmGPT 的核心秘密在后端,依赖 RAG(Retrieval-Augmented Generation) :
-
用户问题向量化
- 用户问:“我最近心情不好,看什么电影?”
- 模型先把这句话转换成向量(数字魔法),方便在知识库里找最相关的电影信息
-
向量数据库检索
-
Supabase 向量数据库存储电影知识块(chunks)
-
每块知识包括:
- content:电影介绍、剧情摘要
- url:来源链接,方便溯源
- movie_title:电影名
- genre / release_year / date_updated
-
检索函数会返回最相关的几个 chunks,提供给大模型参考
-
-
Prompt 设计
- 中文 + Markdown 输出
- 如果用户问心情相关问题 → 推荐 2~3 部电影
- 非电影问题 → 礼貌提醒:“抱歉,我只会聊电影哦!”
知识点深度解析:
-
RAG 的优势
- 不让模型胡编乱造,有据可依
- 比单纯的 LLM 回答更准确,回答内容可以追溯到真实来源
-
向量数据库的妙处
- 用向量相似度找知识块,比关键词匹配更智能
- 解决“同义词”“语序不一”带来的搜索问题
-
流式响应
- 前端可以边生成边显示,避免尬聊的沉默感
小白理解:用户问问题 → 转数字向量 → 数据库找相似知识 → LLM 结合知识回答 → 前端边显示边渲染,整个过程像魔法一样流畅。
四、知识库构建:爬虫 + 切块 + 向量化
FilmGPT 要聪明,必须有丰富的电影知识库。
知识库建设流程:
-
网页爬取
- Puppeteer 爬取 IMDb、Wikipedia 等网站
- 获取电影页面 HTML → 清洗成纯文本
-
文本切块
- RecursiveCharacterTextSplitter 将文本切成 512 字左右的小块,重叠 100 字
- 避免一条信息被切断,保证检索到完整语义
-
向量化 & 入库
- 每块文本生成 embedding(数字向量)
- 入库字段包含:内容、向量、电影信息、来源和更新时间
知识点解析:
-
切块的作用:
- 模型检索时,不会因为文本太长而漏掉关键信息
-
向量化:
- 将文本转换成数字向量,方便计算相似度
-
Supabase 向量 DB:
- 可以快速找到和用户问题最相关的知识块
换句话说:我们给 AI 准备了“电影知识小卡片”,AI 每次只抽最相关的几张来回答你,准确率大大提升。
五、Prompt 工程:中文 + 情绪推荐
Prompt 就像给 AI 的剧本,告诉它“你该怎么回答、输出什么格式”。
设计原则:
-
上下文驱动回答
- 提供 RAG 检索出的知识块,让 AI 有依据生成答案
-
中文输出 + Markdown
- 让回答美观易读,直接渲染成列表、链接等格式
-
情绪化推荐规则
- 用户问心情问题 → 推荐 2~3 部电影
- 非电影问题 → 礼貌告知只聊电影
小白理解:Prompt 就是给 AI 的“剧本”,告诉它剧情、格式、和回答风格,让回答更专业、更贴心。
六、项目亮点与技术深度总结
-
RAG + 向量数据库
- 知识可追溯,回答更准确
-
流式输出
- 前端像真人聊天一样边生成边显示
-
中文 + Markdown
- 前端直接渲染,用户体验友好
-
情绪化推荐
- 不仅回答电影问题,还能理解用户心情并推荐电影
-
可扩展性强
- 支持更多电影来源,未来可接入语音、观影历史、个性化推荐
总结一句话:FilmGPT = “私人电影顾问 + 心情电影推荐小助手”,从此问电影不用翻 IMDb、豆瓣,也不用烦恼看什么电影。
七、项目思路延伸
- 批量爬取 IMDb Top 100 / Top 250 电影,丰富知识库
- 增加用户收藏和观影历史,形成个性化推荐
- 接入语音输入/输出,做成语音电影问答机器人
- 增加评分聚合,形成更智能的推荐系统
八、幽默总结
- 你问电影,它有答案
- 你心情不好,它帮你挑片
- 你的朋友问电影,它比你还专业
- 数据库 + LLM + RAG 三位一体,你的私人影评助理就上线啦
最后总结一句:FilmGPT,不只是一个聊天机器人,它是你的私人影评馆、心情疗愈师和电影百科全书三合一,让你从此看电影不再迷路。