[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-13-bu-jian-chu-milvus-rag-dui-die-zh":3,"article-related-13-bu-jian-chu-milvus-rag-dui-die-zh":31,"series-tools-641a3d14-6c0b-492d-b295-89edb4355765":84},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":23,"views":27,"created_at":28,"published_at":29,"topic_cluster_id":30},"641a3d14-6c0b-492d-b295-89edb4355765","13-bu-jian-chu-milvus-rag-dui-die-zh","13 步建出 Milvus RAG 堆疊","\u003Cp data-speakable=\"summary\">這篇教你用 Python、\u003Ca href=\"\u002Ftag\u002Fdocker\">Docker\u003C\u002Fa>、Milvus 和 \u003Ca href=\"\u002Ftag\u002Flangchain\">LangChain\u003C\u002Fa>，從零建出可查詢、可過濾、可延伸到正式環境的 \u003Ca href=\"\u002Ftag\u002Frag\">RAG\u003C\u002Fa> 堆疊。\u003C\u002Fp>\u003Cp>這篇給想把文件問答、知識庫檢索或內部搜尋系統做\u003Ca href=\"\u002Fnews\u002Fscalise-floor-message-gop-playbook-zh\">成可\u003C\u002Fa>運作原型的\u003Ca href=\"\u002Fnews\u002F5-mcp-zh\">開發者\u003C\u002Fa>看。照著做完，你會拿到一套本機可跑的 Milvus 2.6 環境、一個含\u003Ca href=\"\u002Fnews\u002Fvector-database-market-iot-time-series-zh\">向量\u003C\u002Fa>與中繼資料欄位的集合、可用的混合搜尋流程，以及能接到大語言模型的 RAG 鏈。\u003C\u002Fp>\u003Cp>每一步都會附上可驗收的產出，讓你在建立、匯入、索引、查詢到串接生成之前先確認狀態，避免做到一半才發現版本不合或集合沒載入。\u003C\u002Fp>\u003Ch2>開始之前\u003C\u002Fh2>\u003Cul>\u003Cli>Python 3.10、3.11 或 3.12\u003C\u002Fli>\u003Cli>Docker Engine 24.x 以上，並啟用 Compose V2\u003C\u002Fli>\u003Cli>至少 8 GB 記憶體，建議 16 GB\u003C\u002Fli>\u003Cli>至少 20 GB 可用磁碟空間\u003C\u002Fli>\u003Cli>Milvus 2.6.x 伺服器映像檔，文件可參考 \u003Ca href=\"https:\u002F\u002Fmilvus.io\u002Fdocs\" target=\"_blank\" rel=\"noopener noreferrer\">Milvus 官方文件\u003C\u002Fa> 與 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmilvus-io\u002Fmilvus\" target=\"_blank\" rel=\"noopener noreferrer\">milvus-io\u002Fmilvus\u003C\u002Fa>\u003C\u002Fli>\u003Cli>pymilvus 2.6.x\u003C\u002Fli>\u003Cli>sentence-transformers 穩定版\u003C\u002Fli>\u003Cli>LangChain 0.3 以上\u003C\u002Fli>\u003Cli>若要用雲端大模型生成答案，請準備 OpenAI API Key\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Step 1: 建立 Python 專案\u003C\u002Fh2>\u003Cp>目的：先做出獨立的工作目錄與虛擬環境，讓 Milvus、嵌入模型與編排工具都固定在同一套依賴裡。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779511586507-p2b3.png\" alt=\"13 步建出 Milvus RAG 堆疊\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>先建立資料夾、啟用虛擬環境，再安裝連線、嵌入與 RAG 所需套件，避免後面發生套件版本互相衝突。\u003C\u002Fp>\u003Cpre>\u003Ccode>mkdir milvus-rag-tutorial\ncd milvus-rag-tutorial\npython3.11 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npython -m pip install --upgrade pip wheel\npip install pymilvus sentence-transformers langchain langchain-community langchain-openai tiktoken python-dotenv\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到 \u003Ccode>pymilvus\u003C\u002Fcode> 安裝完成，並且執行 \u003Ccode>python -c \"import pymilvus; print(pymilvus.__version__)\"\u003C\u002Fcode> 時回傳 2.6.x 版本字串。\u003C\u002Fp>\u003Ch2>Step 2: 啟動本機 Milvus 服務\u003C\u002Fh2>\u003Cp>目的：先把 Milvus、etcd 與 MinIO 一起拉起來，建立一個接近正式環境的本機測試站台。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779511590002-kn88.png\" alt=\"13 步建出 Milvus RAG 堆疊\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>建立 Docker Compose 設定檔，指定 Milvus 2.6.x 映像檔版本，接著用 Compose 啟動服務，讓之後的索引與查詢都打到同一個本機端點。\u003C\u002Fp>\u003Cpre>\u003Ccode>docker compose up -d\ndocker compose logs -f standalone | head -60\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到類似 \u003Ccode>Proxy successfully started, listen on: [::]:19530\u003C\u002Fcode> 的訊息，而且容器狀態保持健康。\u003C\u002Fp>\u003Ch2>Step 3: 驗證 Python 連線\u003C\u002Fh2>\u003Cp>目的：確認 Python 用戶端真的能連到 Milvus，並讀到伺服器版本。\u003C\u002Fp>\u003Cp>建立一個最小連線程式，指向本機的 \u003Ccode>http:\u002F\u002Flocalhost:19530\u003C\u002Fcode>，並使用本機測試預設的 root \u003Ca href=\"\u002Ftag\u002Ftoken\">token\u003C\u002Fa> 進行連線。\u003C\u002Fp>\u003Cpre>\u003Ccode>from pymilvus import MilvusClient\n\nclient = MilvusClient(uri=\"http:\u002F\u002Flocalhost:19530\", token=\"root:Milvus\")\nprint(client.get_server_version())\nprint(client.list_collections())\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到 Milvus 伺服器版本，以及一個空的集合清單。\u003C\u002Fp>\u003Ch2>Step 4: 定義 RAG 集合結構\u003C\u002Fh2>\u003Cp>目的：建立能存放文件文字、向量與中繼資料的集合，讓後續可以做過濾與檢索。\u003C\u002Fp>\u003Cp>先規劃 ID、chunk 文字、dense vector 與 source、title、tenant 之類欄位，再把 schema 固定下來，這樣之後從本機搬到正式環境時不必重做資料模型。\u003C\u002Fp>\u003Cpre>\u003Ccode>from pymilvus import MilvusClient\n\nclient = MilvusClient(uri=\"http:\u002F\u002Flocalhost:19530\", token=\"root:Milvus\")\nclient.create_collection(\n    collection_name=\"rag_docs\",\n    dimension=768,\n    primary_field_name=\"id\",\n    vector_field_name=\"embedding\",\n    id_type=\"int64\",\n    metric_type=\"COSINE\",\n)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該能在集合清單中看到 \u003Ccode>rag_docs\u003C\u002Fcode>。\u003C\u002Fp>\u003Ch2>Step 5: 產生文件向量\u003C\u002Fh2>\u003Cp>目的：把原始文字轉成 Milvus 可以索引與搜尋的 dense vectors。\u003C\u002Fp>\u003Cp>載入 sentence-transformers 模型，對每個 chunk 做嵌入，並且在匯入與查詢時都維持同一個模型，避免向量空間不一致。\u003C\u002Fp>\u003Cpre>\u003Ccode>from sentence_transformers import SentenceTransformer\n\nmodel = SentenceTransformer(\"all-MiniLM-L6-v2\")\nvectors = model.encode([\"Milvus 是向量資料庫。\", \"RAG 會先檢索，再生成答案。\"])\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該拿到與輸入字串數量相同的向量，而且每個向量維度都要和集合 schema 一致。\u003C\u002Fp>\u003Ch2>Step 6: 切塊並匯入文件庫\u003C\u002Fh2>\u003Cp>目的：把真實文件整理成可檢索的資料列，讓搜尋結果來自你自己的知識內容。\u003C\u002Fp>\u003Cp>將文件切成有重疊的 chunk，補上來源與標題等中繼資料，產生向量後分批寫入集合，讓後續查詢可以直接命中內容。\u003C\u002Fp>\u003Cpre>\u003Ccode>rows = [\n  {\"id\": 1, \"text\": \"...\", \"embedding\": vectors[0], \"source\": \"docs\", \"title\": \"簡介\"}\n]\nclient.insert(collection_name=\"rag_docs\", data=rows)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到 insert 回傳已插入的 ID，且集合筆數有增加。\u003C\u002Fp>\u003Ch2>Step 7: 建立並載入向量索引\u003C\u002Fh2>\u003Cp>目的：替 embedding 欄位建立 ANN 索引，讓搜尋速度足夠快。\u003C\u002Fp>\u003Cp>先用 AUTOINDEX 走最簡單路徑，或在需要更細控制延遲與記憶體時改用 HNSW、IVF_FLAT 或 DISKANN。\u003C\u002Fp>\u003Cpre>\u003Ccode>client.create_index(\n    collection_name=\"rag_docs\",\n    field_name=\"embedding\",\n    index_params={\"index_type\": \"AUTOINDEX\", \"metric_type\": \"COSINE\"},\n)\nclient.load_collection(collection_name=\"rag_docs\")\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到集合已載入，且搜尋不再出現未載入集合的錯誤。\u003C\u002Fp>\u003Ch2>Step 8: 執行第一次語意搜尋\u003C\u002Fh2>\u003Cp>目的：確認檢索層能對自然語言問題回傳相關 chunk。\u003C\u002Fp>\u003Cp>用同一個嵌入模型把查詢轉成向量，再對集合發出搜尋，接著檢視前幾筆結果與分數是否合理。\u003C\u002Fp>\u003Cpre>\u003Ccode>query_vec = model.encode([\"Milvus 是拿來做什麼的？\"])[0]\nresults = client.search(\n    collection_name=\"rag_docs\",\n    data=[query_vec],\n    limit=5,\n    output_fields=[\"text\", \"title\", \"source\"],\n)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到最相關的 chunk 排在前面，而且分數與你使用的 metric type 相符。\u003C\u002Fp>\u003Ch2>Step 9: 加入中繼資料過濾\u003C\u002Fh2>\u003Cp>目的：先縮小候選集合，再把更精準的內容送進生成階段。\u003C\u002Fp>\u003Cp>使用 \u003Ccode>source\u003C\u002Fcode>、\u003Ccode>tenant\u003C\u002Fcode>、\u003Ccode>category\u003C\u002Fcode> 這類欄位過濾搜尋結果，能減少雜訊，也能讓多租戶或多文件來源的情境更穩定。\u003C\u002Fp>\u003Cpre>\u003Ccode>results = client.search(\n    collection_name=\"rag_docs\",\n    data=[query_vec],\n    filter='source == \"docs\"',\n    limit=5,\n    output_fields=[\"text\", \"title\", \"source\"],\n)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該只會拿到符合過濾條件的資料列，這表示中繼資料路徑已經正常工作。\u003C\u002Fp>\u003Ch2>Step 10: 串接 LangChain RAG 鏈\u003C\u002Fh2>\u003Cp>目的：把檢索結果接進提示詞與大模型，完成端到端問答。\u003C\u002Fp>\u003Cp>把 Milvus 搜尋包成 retriever，將取回的 context 塞進 prompt，再交給你要用的 \u003Ca href=\"\u002Ftag\u002Fllm\">LLM\u003C\u002Fa> 生成最終答案。\u003C\u002Fp>\u003Cpre>\u003Ccode># 流程示意\n# 問題 → Milvus 搜尋 → 取回前幾段 → 提示詞模板 → LLM 回答\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該能針對自己的文件內容提問，並得到有根據、能對應到檢索內容的答案。\u003C\u002Fp>\u003Ch2>Step 11: 加入 BM25 混合搜尋\u003C\u002Fh2>\u003Cp>目的：提升罕見詞、專有名詞與代碼字串的召回率。\u003C\u002Fp>\u003Cp>把 dense vector 檢索與 sparse 檢索一起使用，讓語意搜尋與關鍵字搜尋互補，而不是互相取代。\u003C\u002Fp>\u003Cpre>\u003Ccode># 先配置 sparse retrieval，再與 dense retrieval 合併\n# 最後在生成前做 merge 或 rerank\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：當你輸入罕見詞或精確名稱時，結果應該比只用 dense search 更準。\u003C\u002Fp>\u003Ch2>Step 12: 基準測試並調整索引\u003C\u002Fh2>\u003Cp>目的：依照延遲、記憶體與召回率目標，選出最適合的索引參數。\u003C\u002Fp>\u003Cp>HNSW 適合低延遲記憶體搜尋，IVF_FLAT 適合折衷型表現，DISKANN 適合大型磁碟型集合，AUTOINDEX 則適合先快速起步。\u003C\u002Fp>\u003Cp>驗收：調整後，你應該看到搜尋更快或記憶體更省，而且結果品質沒有明顯下降。\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>指標\u003C\u002Fth>\u003Cth>基準／優化前\u003C\u002Fth>\u003Cth>結果／優化後\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>BM25 搜尋速度\u003C\u002Ftd>\u003Ctd>以外部搜尋引擎作為基準\u003C\u002Ftd>\u003Ctd>Milvus 2.6 官方資料宣稱可快 400%\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>向量記憶體占用\u003C\u002Ftd>\u003Ctd>FP32 向量\u003C\u002Ftd>\u003Ctd>改用 FP16 或 BF16 後約減半\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>部署型態\u003C\u002Ftd>\u003Ctd>僅能使用叢集式架構\u003C\u002Ftd>\u003Ctd>可選 Lite、Standalone 或 Distributed\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>Step 13: 加固並部署到正式環境\u003C\u002Fh2>\u003Cp>目的：把本機原型整理成可以長期運作的服務。\u003C\u002Fp>\u003Cp>先更換預設 root token，再把查詢與寫入流量分開，接著備份 volume，最後在工作量增加時切換到 Helm 或受管部署。\u003C\u002Fp>\u003Cpre>\u003Ccode># 正式上線檢查清單\n# - 變更憑證\n# - 建立資料卷快照\n# - 監控查詢延遲\n# - 測試還原流程\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該能重新啟動整套服務，重新連線，並且仍然查到相同的集合與筆數。\u003C\u002Fp>\u003Ch2>常見錯誤\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Cstrong>用戶端與伺服器版本不一致：\u003C\u002Fstrong>如果 \u003Ccode>pymilvus\u003C\u002Fcode> 和 Milvus 次版本不同，請重新安裝對應版本後再做連線驗證。\u003C\u002Fli>\u003Cli>\u003Cstrong>集合尚未載入就查詢：\u003C\u002Fstrong>如果匯入後搜尋失敗，先呼叫 \u003Ccode>load_collection\u003C\u002Fcode> 再查一次，並確認載入狀態。\u003C\u002Fli>\u003Cli>\u003Cstrong>向量維度不相符：\u003C\u002Fstrong>如果 insert 失敗，請確認嵌入模型輸出的維度與集合 schema 完全一致。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>接下來可以看什麼\u003C\u002Fh2>\u003Cp>下一步可以把 reranking、多租戶分區、可觀測性與 Kubernetes 或 Zilliz Cloud 部署加進來，讓這套 RAG 堆疊從可跑的原型升級成可維運的系統。\u003C\u002Fp>","這篇操作指南教你用 Python、Docker、Milvus、LangChain 一步一步做出可查詢、可過濾、可延伸到正式環境的 RAG 堆疊。","tech-insider.org","https:\u002F\u002Ftech-insider.org\u002Fmilvus-vector-database-tutorial-rag-13-steps-2026\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779511586507-p2b3.png","tools","zh","5cdb0497-b424-4a06-a985-9f4543c4db36",[17,18,19,20,21,22],"Milvus","RAG","Python","Docker Compose","LangChain","向量資料庫",[24,25,26],"先用 Docker Compose 建出本機 Milvus 2.6，再用 pymilvus 驗證連線與版本。","集合設計要同時保留文字、向量與中繼資料，才能支援過濾與混合搜尋。","先完成索引、載入與語意搜尋驗收，再把結果串到 LangChain 與生成模型。",4,"2026-05-23T04:45:55.423757+00:00","2026-05-23T04:45:55.402+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":32,"relatedLang":43,"relatedPosts":47},[33,35,37,39,41],{"name":19,"slug":34},"python",{"name":18,"slug":36},"rag",{"name":20,"slug":38},"docker-compose",{"name":21,"slug":40},"langchain",{"name":17,"slug":42},"milvus",{"id":15,"slug":44,"title":45,"language":46},"how-to-build-milvus-rag-stack-in-13-steps-en","How to Build a Milvus RAG Stack in 13 Steps","en",[48,54,60,66,72,78],{"id":49,"slug":50,"title":51,"cover_image":52,"image_url":52,"created_at":53,"category":13},"7f9cba9e-2646-428f-ab12-d07966ce9fad","windsurf-turns-coding-into-agent-driven-editing-zh","Windsurf 把寫 code 變成代理編輯","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781568201368-r0vx.png","2026-06-16T00:02:57.207578+00:00",{"id":55,"slug":56,"title":57,"cover_image":58,"image_url":58,"created_at":59,"category":13},"736e7c19-d81b-4266-b1ff-6f13295b1608","cursors-latest-update-ide-workflow-tools-zh","Cursor 最新更新證明：IDE 必須升級成工作流程工具","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781491671914-7wov.png","2026-06-15T02:47:20.32431+00:00",{"id":61,"slug":62,"title":63,"cover_image":64,"image_url":64,"created_at":65,"category":13},"f4124807-6c95-424a-8d27-4c79020cff1a","cursor-bugbot-before-push-not-pr-zh","Cursor 的 Bugbot 應該先於 push，而不是卡在 PR","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781490766583-u6gl.png","2026-06-15T02:32:16.371174+00:00",{"id":67,"slug":68,"title":69,"cover_image":70,"image_url":70,"created_at":71,"category":13},"c66ec601-83a5-4f30-933d-9cb6f033d1b1","prompt-engineering-writing-skill-not-magic-trick-zh","提示工程不是魔法，是寫作能力","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781470976122-5307.png","2026-06-14T21:02:27.880576+00:00",{"id":73,"slug":74,"title":75,"cover_image":76,"image_url":76,"created_at":77,"category":13},"2a3ab73e-e585-42cb-9ee8-1552d1307bb8","open-notebook-turns-notebooklm-into-open-source-zh","Open-Notebook 讓 NotebookLM 變開源","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781450302934-yaye.png","2026-06-14T15:17:50.078985+00:00",{"id":79,"slug":80,"title":81,"cover_image":82,"image_url":82,"created_at":83,"category":13},"8c54af61-2536-4778-b286-fbc4ba04b5b8","gpu-mag-list-turns-gpu-tests-into-workflow-zh","GPU Mag 清單變成測試流程","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781440405583-axcq.png","2026-06-14T12:33:00.102614+00:00",[85,90,95,100,105,110,115,120,125,130],{"id":86,"slug":87,"title":88,"created_at":89},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":91,"slug":92,"title":93,"created_at":94},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":96,"slug":97,"title":98,"created_at":99},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":101,"slug":102,"title":103,"created_at":104},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":106,"slug":107,"title":108,"created_at":109},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":116,"slug":117,"title":118,"created_at":119},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":121,"slug":122,"title":123,"created_at":124},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":126,"slug":127,"title":128,"created_at":129},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":131,"slug":132,"title":133,"created_at":134},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]