iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
生成式 AI

一起來打造 PTT 文章智慧問答系統!系列 第 16

【Day 16】認識 RAG 與 向量資料庫 - 整合 RAG 與 Pinecone 的運作流程

  • 分享至 

  • xImage
  •  

Hi大家好,
這是我參加 iT 邦幫忙鐵人賽的第 1 次挑戰,這次的主題聚焦在結合 Python 爬蟲、RAG(檢索增強生成)與 AI,打造一套 PTT 文章智慧問答系統。在過程中,我會依照每天進度上傳程式碼到 GitHub ,方便大家參考學習。也歡迎留言或來信討論,我的信箱是 gerryearth@gmail.com


今天,我們先從基礎概念出發,認識 RAG 的運作流程、向量資料庫的用途,以及 Pinecone 在專案中的關鍵角色,為後續的實作打好基礎。


今日目標

  • 認識什麼是 RAG(檢索增強生成)
  • 瞭解向量資料庫的用途與運作方式
  • 介紹 Pinecone 並說明其功能
  • 描述未來如何將 PTT 資料與 LLM 整合查詢

什麼是 RAG?

RAG(Retrieval-Augmented Generation) 是一種結合「檢索」與「生成」的 AI 架構。它能讓大型語言模型(如 Gemini / GPT)在生成回答時,參考外部知識來源,提高準確性並減少幻覺。

RAG 流程簡介:

  1. 使用者輸入問題
  2. 系統先「檢索」相關資料(如本地文章段落)
  3. 將檢索結果傳給語言模型進行「生成回答」

為什麼不能只靠 LLM?

雖然大型語言模型擁有龐大的知識,但:

  • 它的知識是訓練時「凍結」的(無法即時更新)
  • 不適合回答即時性、公司內部、領域知識等問題
  • 容易「胡說八道」出看似正確但實際錯誤的回答

解法:加上「檢索」機制,模型就能根據最新的知識來回答!


向量資料庫是什麼?

一般資料庫(如 MariaDB)無法根據「語意」查詢資料。但我們可以把每一段文字轉成一個「向量」(Vector),代表其語意內容,再用向量比對來做檢索!

向量查詢範例:

假設你輸入問題:「為什麼 PTT 八卦版總是那麼熱門?」
系統會:

  1. 把這個問題轉成語意向量
  2. 在所有文章段落中找到語意最相近的段落
  3. 把找到的段落餵給 LLM,生成一段精準的回答!

Pinecone:專業的向量資料庫

Pinecone 是一個向量數據庫,專門設計來處理高維度向量資料,主要應用於相似度搜尋,例如在人工智慧和機器學習中的推薦系統、聊天機器人、圖像搜尋等場景。

會選擇 Pinecone 的最大原因是它有提供免費的額度,而且夠我們用來練習本次的專案!

之後我們也會將每篇文章切割成段落,並將段落向量儲存在 Pinecone 中,未來查詢時就能快速找到相關內容。

可參考此文章: Pinecone 申請與設定


Pinecone 使用方式簡介

  1. 註冊 Pinecone 帳號,取得 API Key
  2. 建立 Index(向量索引空間)
  3. 傳送向量資料
  4. 搭配 LangChain 或自行寫檢索邏輯與 LLM 整合

本專案未來實作預告

  • 使用 Gemini Embedding API 將段落轉為向量
  • 儲存到 Pinecone,並將文章 metadata 一併存入
  • 實作語意檢索功能,支援上下文問答
  • 結合 Django API 提供查詢與回答介面

明天【Day 17】建立向量資料庫基礎 - Gemini Embedding 與 Pinecone 初步串接
我們將開始動手,使用 Gemini API 將文章內容向量化,並實際將向量上傳至 Pinecone,打造語意檢索基礎!


上一篇
【Day 15】實作 Django REST Framework API - 建立文章 API:單篇內容與統計資料
下一篇
【Day 17】建立向量資料庫基礎 - Gemini Embedding 與 Pinecone 初步串接
系列文
一起來打造 PTT 文章智慧問答系統!30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言