在過去的幾天裡,我們的 AI 報告都是 一次性生成,分析完就結束。
但如果我今天查了 AAPL,明天查了 TSLA,AI 並不會記得我昨天的分析。
👉 解決辦法:讓 AI 拿到「自己的記憶」,把過去的分析記錄下來,之後再查詢時可以回顧與延伸。
這正是 向量資料庫 (Vector Database) 的用途。
向量化 (Embedding):把文字(例如投資報告)轉換成數字向量。
相似度搜尋 (Similarity Search):當我們問「這家公司過去的分析是什麼?」時,向量資料庫能找到最相關的紀錄。
AI + 記憶:我們再把這些過去的紀錄丟回 LLM,讓它能「有記憶地」回答。
常見的向量資料庫:
FAISS(Facebook 開源,輕量、好上手)
Pinecone(雲端,適合大量資料)
Weaviate / Milvus(開源,進階應用)
今天的實作,我們用 FAISS + Gemini API,方便在 Google Colab 執行。
python
!pip install faiss-cpu google-generativeai
import faiss
import numpy as np
import google.generativeai as genai
# 設定 Gemini
genai.configure(api_key="YOUR_GEMINI_API_KEY")
embed_model = "models/embedding-001"
# 建立 FAISS index(128 維度示範,實際會依 embedding 向量維度調整)
dimension = 768
index = faiss.IndexFlatL2(dimension)
# 模擬存放的投資報告
reports = [
"AAPL:蘋果營收持續成長,iPhone 銷售表現亮眼。",
"TSLA:特斯拉交付量低於市場預期,股價短期承壓。",
"MSFT:微軟雲端 Azure 業績超乎預期,AI 投資持續推進。"
]
# 轉換成向量並存入資料庫
vectors = []
for r in reports:
emb = genai.embed_content(model=embed_model, content=r)
vec = np.array(emb["embedding"], dtype="float32")
vectors.append(vec)
vectors = np.vstack(vectors)
index.add(vectors)
print("✅ 已建立向量資料庫,共存入", index.ntotal, "筆資料")
現在,如果問「請回顧 AAPL 的分析紀錄」,我們就能從資料庫找到最相關的內容。
python
query = "請回顧 AAPL 的分析紀錄"
emb = genai.embed_content(model=embed_model, content=query)
query_vec = np.array(emb["embedding"], dtype="float32")
# 搜尋最相關的紀錄
D, I = index.search(np.array([query_vec]), k=2)
print("🔎 查詢結果:")
for i in I[0]:
print("-", reports[i])
我們再把結果交給 Gemini,讓它生成「有記憶」的分析。
python
retrieved_reports = [reports[i] for i in I[0]]
prompt = f"""
以下是過去的投資分析紀錄:
{retrieved_reports}
請根據這些紀錄,提供一份針對 AAPL 的回顧與延伸解讀。
"""
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(prompt)
print("🧠 AI 有記憶的回應:")
print(response.text)
今天我們讓 AI 報告從「一次性」進化到「有記憶」。
透過 向量資料庫 + LLM,它能回顧過去的分析、做延伸解讀,未來甚至可以做「個人化投資助理」,根據你的持股紀錄來提醒風險。
👉 明天(Day 29),我們將回顧這 30 天的旅程,把學到的 AI 投資思維與技術重新整理,並思考如何應用到日常投資策略中。