FilmGPT:你的私人电影问答 AI,技术深度解析

131 阅读6分钟

想快速查电影信息?想根据心情挑片?想问“《盗梦空间》的主演是谁”,或者“我最近心情不好,看什么电影”?
FilmGPT 可以一站搞定!今天,我们不啰嗦一行行代码,而是深度拆解它的实现原理和技术亮点,让你看懂它是怎么聪明起来的——甚至比你那堆影评软件更懂电影。


一、FilmGPT 是什么?

FilmGPT 是一个 结合大模型(LLM)+ 向量数据库(Vector DB)+ RAG(知识增强生成) 的智能电影问答助手。

功能概览:

  1. 电影问答

    • 可以问电影导演、主演、评分、奖项,甚至问“导演拍这部电影是不是脑洞大开?”
  2. 情绪化推荐

    • 心情不好?FilmGPT 会贴心推荐 2~3 部电影,让你瞬间回到“电影世界治愈模式”。
  3. 知识库自建

    • 从 IMDb、Wikipedia 等权威网站爬取电影内容
    • 切块、向量化后存入 Supabase 向量数据库
  4. 中文输出 + Markdown 渲染

    • 前端直接可读,还带格式美观的列表和链接

小白理解:FilmGPT 就像你的私人电影顾问,不管你想查电影信息,还是心情低落想看片,它都能秒懂你。


二、前端:聊天界面的设计

前端使用 React + Tailwind + Zustand,主要特点:

  • ChatInput:用户输入问题的地方,就像你对助理说话一样
  • ChatOutput:展示聊天记录,支持流式显示,边生成边看答案
  • useChat 自定义 Hook:管理输入、消息列表和请求状态

知识点深度解析:

  1. 自定义 Hook 是啥?

    • 想象一下,你有个贴身小秘书,帮你记住聊天记录、输入框内容、以及什么时候按“发送”
    • useChat 就是这个秘书,把状态和逻辑全包起来,前端组件只负责显示和交互
  2. 流式显示为什么重要?

    • 大模型回答可能需要几秒钟,如果一次性显示完整回答,你可能会心里默念:“它还活着吗?”
    • 边生成边显示,用户体验直逼真人聊天

总结一句:前端是“聊天窗口”,useChat 是小秘书,ChatInput 是你说话的嘴,ChatOutput 是你看到答案的眼睛。


三、后端:RAG + 向量检索的魔法

FilmGPT 的核心秘密在后端,依赖 RAG(Retrieval-Augmented Generation)

  1. 用户问题向量化

    • 用户问:“我最近心情不好,看什么电影?”
    • 模型先把这句话转换成向量(数字魔法),方便在知识库里找最相关的电影信息
  2. 向量数据库检索

    • Supabase 向量数据库存储电影知识块(chunks)

    • 每块知识包括:

      • content:电影介绍、剧情摘要
      • url:来源链接,方便溯源
      • movie_title:电影名
      • genre / release_year / date_updated
    • 检索函数会返回最相关的几个 chunks,提供给大模型参考

  3. Prompt 设计

    • 中文 + Markdown 输出
    • 如果用户问心情相关问题 → 推荐 2~3 部电影
    • 非电影问题 → 礼貌提醒:“抱歉,我只会聊电影哦!”

知识点深度解析:

  • RAG 的优势

    • 不让模型胡编乱造,有据可依
    • 比单纯的 LLM 回答更准确,回答内容可以追溯到真实来源
  • 向量数据库的妙处

    • 用向量相似度找知识块,比关键词匹配更智能
    • 解决“同义词”“语序不一”带来的搜索问题
  • 流式响应

    • 前端可以边生成边显示,避免尬聊的沉默感

小白理解:用户问问题 → 转数字向量 → 数据库找相似知识 → LLM 结合知识回答 → 前端边显示边渲染,整个过程像魔法一样流畅。


四、知识库构建:爬虫 + 切块 + 向量化

FilmGPT 要聪明,必须有丰富的电影知识库。

知识库建设流程:

  1. 网页爬取

    • Puppeteer 爬取 IMDb、Wikipedia 等网站
    • 获取电影页面 HTML → 清洗成纯文本
  2. 文本切块

    • RecursiveCharacterTextSplitter 将文本切成 512 字左右的小块,重叠 100 字
    • 避免一条信息被切断,保证检索到完整语义
  3. 向量化 & 入库

    • 每块文本生成 embedding(数字向量)
    • 入库字段包含:内容、向量、电影信息、来源和更新时间

知识点解析:

  • 切块的作用

    • 模型检索时,不会因为文本太长而漏掉关键信息
  • 向量化

    • 将文本转换成数字向量,方便计算相似度
  • Supabase 向量 DB

    • 可以快速找到和用户问题最相关的知识块

换句话说:我们给 AI 准备了“电影知识小卡片”,AI 每次只抽最相关的几张来回答你,准确率大大提升。


五、Prompt 工程:中文 + 情绪推荐

Prompt 就像给 AI 的剧本,告诉它“你该怎么回答、输出什么格式”。

设计原则:

  1. 上下文驱动回答

    • 提供 RAG 检索出的知识块,让 AI 有依据生成答案
  2. 中文输出 + Markdown

    • 让回答美观易读,直接渲染成列表、链接等格式
  3. 情绪化推荐规则

    • 用户问心情问题 → 推荐 2~3 部电影
    • 非电影问题 → 礼貌告知只聊电影

小白理解:Prompt 就是给 AI 的“剧本”,告诉它剧情、格式、和回答风格,让回答更专业、更贴心。


六、项目亮点与技术深度总结

  1. RAG + 向量数据库

    • 知识可追溯,回答更准确
  2. 流式输出

    • 前端像真人聊天一样边生成边显示
  3. 中文 + Markdown

    • 前端直接渲染,用户体验友好
  4. 情绪化推荐

    • 不仅回答电影问题,还能理解用户心情并推荐电影
  5. 可扩展性强

    • 支持更多电影来源,未来可接入语音、观影历史、个性化推荐

总结一句话:FilmGPT = “私人电影顾问 + 心情电影推荐小助手”,从此问电影不用翻 IMDb、豆瓣,也不用烦恼看什么电影。


七、项目思路延伸

  • 批量爬取 IMDb Top 100 / Top 250 电影,丰富知识库
  • 增加用户收藏和观影历史,形成个性化推荐
  • 接入语音输入/输出,做成语音电影问答机器人
  • 增加评分聚合,形成更智能的推荐系统

八、幽默总结

  • 你问电影,它有答案
  • 你心情不好,它帮你挑片
  • 你的朋友问电影,它比你还专业
  • 数据库 + LLM + RAG 三位一体,你的私人影评助理就上线啦

最后总结一句:FilmGPT,不只是一个聊天机器人,它是你的私人影评馆、心情疗愈师和电影百科全书三合一,让你从此看电影不再迷路。