[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-zvec-turns-local-vector-search-into-a-library-zh":3,"article-related-zvec-turns-local-vector-search-into-a-library-zh":30,"series-tools-f87f416c-0f08-4137-b070-714cace25274":74},{"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":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"f87f416c-0f08-4137-b070-714cace25274","zvec-turns-local-vector-search-into-a-library-zh","Zvec 把本地向量搜尋變成函式庫","\u003Cp data-speakable=\"summary\">我把 Zvec 拆成一套可直接抄的本地向量搜尋做法：把檢索塞回應用程式、把混合搜尋和全文檢索放進同一個引擎。\u003C\u002Fp>\u003Cp>我用向量搜尋堆疊一陣子了，越用越火大。我要的明明只是把檢索功能做進產品，結果很快就變成我要顧另一台服務、調連線逾時、補權限、還要跟人解釋為什麼一個「簡單相似度搜尋」會長成半套平台。更煩的是，查詢一旦複雜起來，dense vector、metadata filter、全文檢索、fallback 路徑全部一起來，整個系統開始像在跟我道歉，而不是幫我做事。\u003C\u002Fp>\u003Cp>我會注意到 Zvec，是因為它走的是反方向。它不是叫我再養一個 box，而是直接把資料庫塞回進程裡，讓延遲留在本地、設定保持單純。這種做法對很多應用才是正解，尤其是檢索層本來就是產品的一部分，不是獨立基礎設施。這篇我主要拆的是 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Falibaba\u002Fzvec\">Zvec GitHub 倉庫\u003C\u002Fa>，以及它 README、\u003Ca href=\"\u002Fnews\u002Fcodex-override-file-team-safety-zh\">文件\u003C\u002Fa>與 release notes 透露出來的思路。\u003C\u002Fp>\u003Cp>我先講清楚：我沒看到官方在頁面上明列 star 或 fork 數字，所以我不亂寫。對我來說，比數字更重要的是它怎麼把搜尋、儲存、過濾壓成一個本地單元，這才是它真正想解的問題。\u003C\u002Fp>\u003Ch2>別再把向量搜尋當成獨立服務養\u003C\u002Fh2>\u003Cblockquote>「Zvec 是一個開源、in-process 的向量資料庫，輕量、快速，並且設計成可以直接嵌進應用程式。」\u003C\u002Fblockquote>\u003Cp>這\u003Ca href=\"\u002Fnews\u002Fhuang-marvell-ai-thesis-hyperscale-infrastructure-zh\">句話\u003C\u002Fa>翻譯一下就是：我不用每次查資料都繞一圈網路。資料庫跟我的程式活在同一個進程裡，故障模型整個變簡單。我要是做桌面應用、邊緣工具、Notebook 工作流，或是某個本來就只需要本地檢索的服務，這種架構就很香。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781714028472-gvbb.png\" alt=\"Zvec 把本地向量搜尋變成函式庫\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我看過太多「先加向量搜尋」最後變成「要不要順便找個維運」的案例。問題不是向量不行，是大家一開始就把它當平台在養。Zvec 的 in-process 其實是在砍掉那些多餘儀式：不用另外部署、不用服務發現、不用先搞遠端連線池，才開始驗證功能值不值得做。\u003C\u002Fp>\u003Cp>實操上，我會這樣判斷：如果檢索路徑本來就屬於你的應用邊界，而且資料量跟查詢量還在單機可控範圍內，那本地內嵌通常比較乾淨。要是你真的需要多租戶協調、跨節點共享、超大規模併發，那就是另一題，不要硬拿 embedded DB 硬拗。\u003C\u002Fp>\u003Cul>\u003Cli>適合：本地應用、agent、桌面工具、內部小工具、邊緣工作負載。\u003C\u002Fli>\u003Cli>不適合：多節點共享服務，資料庫本身必須是中心平台。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>Zvec 最有意思的地方，是它把這個取捨講得很直白。它不是想當你的分散式搜尋後端，它是想當你嵌進去就能用的那顆搜尋引擎。\u003C\u002Fp>\u003Ch2>混合搜尋才是我真的在乎的部分\u003C\u002Fh2>\u003Cblockquote>「Hybrid Search：把向量相似度、全文檢索和結構化過濾合併到同一個查詢裡，得到更精準的結果。」\u003C\u002Fblockquote>\u003Cp>這句我很有感，因為純向量搜尋在真實產品裡常常太飄。使用者要的不是「語意上有點像」，而是「這件事要符合硬條件」。例如他想找的是「上週的 billing issue，而且在歐洲區」，不是「跟 billing 有關」。如果檢索層不能把語意、文字、條件一起處理，我最後就得在應用層自己補一堆很醜的後處理。\u003C\u002Fp>\u003Cp>Zvec 的做法比較務實：dense vectors、sparse vectors、文字欄位、scalar filter 放在同一條查詢路徑裡。這就是我想要的檢索形狀，因為它同時回答兩件事：這東西內容上像不像，以及它有沒有符合\u003Ca href=\"\u002Fnews\u002F2-billion-nvidia-coherent-ai-plant-huang-warning-zh\">規則\u003C\u002Fa>。\u003C\u002Fp>\u003Cp>我之前自己做過類似系統，最常犯的錯就是太迷信 embedding，卻把那些很 boring 的欄位丟掉。結果每個查詢都在補召回率，最後系統像在打補丁。混合搜尋的價值，就是讓每一種訊號做自己擅長的事。\u003C\u002Fp>\u003Cp>實操寫法很簡單：先把你真的需要限制的欄位建模出來，不要什麼都丟進 embedding 期待模型自己懂。文字欄位保留全文檢索，結構化資料保留 filter，語意相似度才交給向量。這樣你的檢索流程才講得清楚，也比較不會把同事一起搞瘋。\u003C\u002Fp>\u003Cul>\u003Cli>向量搜尋負責語意相似。\u003C\u002Fli>\u003Cli>全文檢索負責精確或接近精確的字詞。\u003C\u002Fli>\u003Cli>過濾條件負責 tenant、日期、地區、類型這種硬限制。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>同一個引擎內建全文檢索，才是真的省事\u003C\u002Fh2>\u003Cblockquote>「原生全文檢索：可以替任何字串欄位掛上 FTS 索引，直接用自然語言或結構化表達式查詢，不需要外部搜尋引擎。」\u003C\u002Fblockquote>\u003Cp>這種功能很容易被低估，直到你真的被迫再接一套文字搜尋系統。然後事情就開始變複雜：資料要同步進向量庫和全文引擎，排名邏輯還可能各自漂掉。我看過這種架構，通常最後都很醜。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781714035220-znrk.png\" alt=\"Zvec 把本地向量搜尋變成函式庫\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>Zvec 的 FTS 之所以有價值，是因為它把檢索故事留在本地，而且還統一在同一個引擎裡。只要資料已經在 collection 裡，我就能把字串欄位掛上全文索引，不需要再去找另一個服務。這代表更少同步 bug、更少奇怪的「為什麼這筆資料在這個索引裡，卻不在那個索引裡」的鬼故事。\u003C\u002Fp>\u003Cp>實操上，我會建議你從第一天就把文字搜尋算進去。就算你的主力是 embedding，使用者最後還是會想查精確片語、人名、ID、或某種結構化文字。不要把這件事當成之後再補，因為通常「之後」就會變成一個清理專案。\u003C\u002Fp>\u003Cp>我自己的理解是這樣：embedding 回答「像不像」，FTS 回答「字面上有沒有」，filter 回答「允不允許」。Zvec 把這三件事塞進同一個引擎，才讓查詢邏輯不會散成一地。\u003C\u002Fp>\u003Ch2>磁碟型索引是它沒裝可愛的地方\u003C\u002Fh2>\u003Cblockquote>「DiskANN 索引：新的磁碟上索引，把大部分索引放在磁碟上，大幅降低大規模資料集的記憶體使用量。」\u003C\u002Fblockquote>\u003Cp>我對任何號稱能擴充的向量資料庫都先半信半疑，因為錢通常是從記憶體那邊燒出來的。很多系統小的時候很漂亮，一旦索引長大，就變成你花錢買一台機器，只為了把資料硬塞進 RAM。這種事我真的看膩了。\u003C\u002Fp>\u003Cp>Zvec 的 DiskANN 支援比較誠實，它直接承認：不是每個資料集都值得全塞進記憶體。把大部分索引留在磁碟上，對較大的 collection 來說是更務實的折衷，尤其是你還想維持本地嵌入與檢索，而不是再拉一個叢集出來。\u003C\u002Fp>\u003Cp>實操上，我會這樣切：資料小、追求極低延遲時，先用 in-memory 索引；當你開始感受到記憶體壓力，就換成磁碟感知的索引。不要等到主機開始 swap 了才說「咦怎麼這麼慢」。\u003C\u002Fp>\u003Cp>我喜歡它把這件事講成工程選項，而不是行銷口號。因為「快」不等於「永遠都必須把全部東西放在 RAM 裡」。\u003C\u002Fp>\u003Cul>\u003Cli>先用記憶體索引做原型和小型資料集。\u003C\u002Fli>\u003Cli>資料量開始超出便宜 RAM 的承受範圍時，再切磁碟型索引。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>持久化和併發，才是救你命的無聊功能\u003C\u002Fh2>\u003Cblockquote>「寫前日誌（WAL）保證持久化：就算行程當掉或斷電，資料也不會消失。」\u003C\u002Fblockquote>\u003Cp>這種功能在 demo 裡最容易被忽略，然後你真的上線之後就會後悔。 local database 只有在重啟後還能活著，才真的有用。WAL 不帥，但它就是讓我敢把這東西放進真實應用的原因。\u003C\u002Fp>\u003Cp>併發那段我也覺得講得很老實：多個行程可以同時讀同一個 collection，但寫入是單進程獨占。這個取捨很明確，我反而欣賞。它告訴我這套東西是為什麼場景設計的：共享讀、受控寫、本地擁有。\u003C\u002Fp>\u003Cp>實操上，你要先決定你的應用到底是單寫者還是多寫者。如果能把寫入集中起來，模型就很簡單；如果你需要分散式寫入，那你就已經回到協調問題了，不要假裝一個內嵌資料庫會幫你把這題魔法解掉。\u003C\u002Fp>\u003Cp>我看過團隊把持久化拖到最後才處理，第一次壞掉才開始認真備份。Zvec 的 WAL 至少讓你可以從一開始就把復原設計進去，而不是等事故來教育你。\u003C\u002Fp>\u003Ch2>SDK 和工具鏈一多，我才會相信它不是玩具\u003C\u002Fh2>\u003Cblockquote>「官方提供 Go \u002F Rust SDK、Zvec Studio 視覺化工具，還有 RISC-V 支援。」\u003C\u002Fblockquote>\u003Cp>一個專案如果有多種語言綁定，我才會開始認真看。這份倉庫除了主打的 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Falibaba\u002Fzvec\">Zvec 倉庫\u003C\u002Fa>，還提到 Python、Node.js、Go、\u003Ca href=\"\u002Ftag\u002Frust\">Rust\u003C\u002Fa>、Dart\u002FFlutter 等支援，外加一個視覺化工具。這很重要，因為真正的資料庫通常不是最潮的那個，而是你實際產品堆疊能直接呼叫的那個。\u003C\u002Fp>\u003Cp>我也喜歡它把 \u003Ca href=\"https:\u002F\u002Fzvec.org\">zvec.org\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Falibaba\u002Fzvec\u002Freleases\">release notes\u003C\u002Fa>，以及 README 裡的文件和 \u003Ca href=\"\u002Ftag\u002Fbenchmark\">benchmark\u003C\u002Fa> 連結都放出來。這種專案通常不是只想秀一個 demo，而是真的希望你去測、去比、去用。\u003C\u002Fp>\u003Cp>實操上，我會先選你正式上線會用的語言綁定，再去驗證查詢語意。不要在 Python 原型跑得很順，就以為 Go 版也會一模一樣。我以前就被這種假設坑過。概念一樣，手感不一定一樣，邊角也常常不一樣。\u003C\u002Fp>\u003Cp>如果是我自己評估 Zvec，我會先用 Python 包快速試 schema 和查詢形狀，再把同一套結構搬到真正要出貨的語言。這樣才知道抽象到底是真的，還是 README 看起來很美而已。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.python.org\u002F\">Python\u003C\u002Fa> 適合快速驗證。\u003C\u002Fli>\u003Cli>\u003Ca href=\"https:\u002F\u002Fgo.dev\u002F\">Go\u003C\u002Fa> 或 \u003Ca href=\"https:\u002F\u002Fwww.rust-lang.org\u002F\">Rust\u003C\u002Fa> 適合正式整合。\u003C\u002Fli>\u003Cli>\u003Ca href=\"https:\u002F\u002Fflutter.dev\u002F\">Flutter\u003C\u002Fa> 適合做 app 端內嵌檢索。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>我會怎麼真的把它用進產品\u003C\u002Fh2>\u003Cp>我的短版答案是：如果我想把檢索留在應用邊界內，而不是再養一個平台，我就會考慮 Zvec。像產品功能、\u003Ca href=\"\u002Ftag\u002Fagent\">agent\u003C\u002Fa> 記憶層、本地語意索引、內部工具這些場景，都很適合。只要程式本身掌握資料生命週期，而且你想要低延遲搜尋，不想再多一層服務，它就有機會派上用場。\u003C\u002Fp>\u003Cp>但我不會拿它當偷懶藉口，假裝自己不用思考規模問題。如果產品需要很多寫者、分散式協調、或多節點共享服務，我會把那當成另一種架構，不會硬把 embedded DB 塞進去。內嵌資料庫很強，但前提是你要把它放在對的位置。\u003C\u002Fp>\u003Cp>這也是我覺得 Zvec 值得看的原因：它不像某些工具那樣硬裝成平台。它比較像一個邊界清楚、功能務實的工具，直接把本地、快速、混合搜尋、持久化這幾件事收進同一個地方。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># Zvec 本地混合搜尋模板（繁中版，可直接改成你的專案格式）\n\n## 1) 資料結構\n- collection_name: \"docs\"\n- 向量欄位：embedding（維度依模型決定）\n- 文字欄位：title、body（啟用全文檢索）\n- 結構化欄位：tenant_id、doc_type、created_at\n\n## 2) 匯入規則\n- 只讓單一寫入流程負責寫資料\n- 開啟 WAL\n- 原文內容與 embedding 一起存\n- 先把 metadata 正規化，再寫入\n\n## 3) 查詢規則\n- 向量搜尋負責語意相似\n- 全文檢索負責字面匹配\n- filter 負責 tenant、日期、類型等硬條件\n- 同一條查詢路徑內完成合併\n\n## 4) 部署原則\n- 本地延遲優先時，使用 in-process\n- 記憶體開始吃緊時，改用磁碟型索引\n- 讀取允許併發\n- 寫入維持單寫者，除非你另外有協調層\n\n## 5) 給團隊的說法\n「我們把 Zvec 放進應用程式裡，讓檢索留在本地。\n查詢要同時用語意、文字和條件過濾。\n除非真的證明需要，不然不要再多拉一個搜尋服務。」\n\n## 6) Python 風格偽碼\nimport zvec\n\nschema = zvec.CollectionSchema(\n    name=\"docs\",\n    vectors=zvec.VectorSchema(\"embedding\", zvec.DataType.VECTOR_FP32, 768),\n)\n\ncollection = zvec.create_and_open(path=\".\u002Fdata\u002Fzvec\", schema=schema)\n\ncollection.insert([\n    zvec.Doc(\n        id=\"doc_1\",\n        vectors={\"embedding\": [0.1, 0.2, 0.3, 0.4]},\n        fields={\n            \"title\": \"當機復原筆記\",\n            \"body\": \"WAL 可以讓本地資料在重啟後保持持久化\",\n            \"tenant_id\": \"acme\",\n            \"doc_type\": \"note\",\n            \"created_at\": 1710000000,\n        },\n    )\n])\n\nresults = collection.query(\n    zvec.MultiQuery(\n        vector={\"field\": \"embedding\", \"value\": [0.4, 0.3, 0.3, 0.1]},\n        text={\"field\": \"body\", \"query\": \"當機復原\"},\n        filters={\"tenant_id\": \"acme\", \"doc_type\": \"note\"},\n    ),\n    topk=10,\n)\n\nprint(results)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>這份模板是我根據 Zvec 的 README、文件連結和 release notes 重新整理出來的，屬於衍生整理，不是原文照抄。你可以直接拿去改成自己的 schema、查詢形狀和團隊規範。\u003C\u002Fp>\u003Cp>原始來源 URL：\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Falibaba\u002Fzvec\">https:\u002F\u002Fgithub.com\u002Falibaba\u002Fzvec\u003C\u002Fa>。我這篇的拆解是原創整理，基礎觀點來自倉庫 README、文件與 release notes 的公開內容。\u003C\u002Fp>","我把 Zvec 拆成一套可直接抄的本地向量搜尋做法：把檢索塞回應用程式、把混合搜尋和全文檢索放進同一個引擎。","github.com","https:\u002F\u002Fgithub.com\u002Falibaba\u002Fzvec",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781714028472-gvbb.png","tools","zh","46e957eb-f078-4527-9f2b-e05e801998d8",[17,18,19,20,21],"向量資料庫","混合搜尋","全文檢索","WAL","DiskANN",[23,24,25],"把向量搜尋嵌進應用程式，少養一個外部服務。","混合搜尋要同時處理語意、文字與結構化條件。","先用可複製的模板把 schema、查詢與部署規則定下來。",0,"2026-06-17T16:33:23.906632+00:00","2026-06-17T16:33:23.896+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":31,"relatedLang":33,"relatedPosts":37},[32],{"name":17,"slug":17},{"id":15,"slug":34,"title":35,"language":36},"zvec-turns-local-vector-search-into-a-library-en","Zvec turns local vector search into a library","en",[38,44,50,56,62,68],{"id":39,"slug":40,"title":41,"cover_image":42,"image_url":42,"created_at":43,"category":13},"f3a58146-9c8e-4358-89f3-d89d9558b629","build-semantic-search-opensearch-vectors-zh","OpenSearch 向量語意搜尋實作指南","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781714880799-8f5k.png","2026-06-17T16:47:36.828153+00:00",{"id":45,"slug":46,"title":47,"cover_image":48,"image_url":48,"created_at":49,"category":13},"0d604975-3f39-4093-9a65-b47e4c6f5ccb","codex-override-file-team-safety-zh","Codex override 文件让团队少踩坑","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781712201211-vhvb.png","2026-06-17T16:02:49.966135+00:00",{"id":51,"slug":52,"title":53,"cover_image":54,"image_url":54,"created_at":55,"category":13},"6c40b201-8e6d-4b48-a988-791936798713","opencode-terminal-ai-coding-loop-zh","OpenCode 讓終端編碼變成迴圈","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781693320715-b9x5.png","2026-06-17T10:47:58.3922+00:00",{"id":57,"slug":58,"title":59,"cover_image":60,"image_url":60,"created_at":61,"category":13},"2830e8de-b146-4dd7-b1f6-1b61c223e9ea","open-source-ai-software-infrastructure-wins-zh","開源 AI 軟體贏在基礎設施，不贏在話題","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781691476387-1uwa.png","2026-06-17T10:17:26.854039+00:00",{"id":63,"slug":64,"title":65,"cover_image":66,"image_url":66,"created_at":67,"category":13},"137212d6-7843-4f65-b19f-f0db62e1929b","wazero-turns-go-wasm-into-plain-go-zh","Wazero 讓 Go Wasm 變回純 Go","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781681649267-d64h.png","2026-06-17T07:33:30.509996+00:00",{"id":69,"slug":70,"title":71,"cover_image":72,"image_url":72,"created_at":73,"category":13},"c849204c-8427-4af7-9662-60aa9e1f5524","ffmpeg-webcli-browser-video-editor-zh","ffmpeg-webCLI 把剪片搬進瀏覽器","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781680695836-cdup.png","2026-06-17T07:17:40.422494+00:00",[75,80,85,90,95,100,105,110,115,120],{"id":76,"slug":77,"title":78,"created_at":79},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":81,"slug":82,"title":83,"created_at":84},"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":86,"slug":87,"title":88,"created_at":89},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":91,"slug":92,"title":93,"created_at":94},"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":96,"slug":97,"title":98,"created_at":99},"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":101,"slug":102,"title":103,"created_at":104},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":106,"slug":107,"title":108,"created_at":109},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"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":116,"slug":117,"title":118,"created_at":119},"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":121,"slug":122,"title":123,"created_at":124},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]