[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-how-to-add-temporal-rag-in-production-zh":3,"tags-how-to-add-temporal-rag-in-production-zh":37,"related-lang-how-to-add-temporal-rag-in-production-zh":48,"related-posts-how-to-add-temporal-rag-in-production-zh":52,"series-ai-agent-7095f05c-34f5-469f-a044-2525d2010ce9":89},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":18,"translated_content":10,"views":19,"is_premium":20,"created_at":21,"updated_at":21,"cover_image":11,"published_at":22,"rewrite_status":23,"rewrite_error":10,"rewritten_from_id":24,"slug":25,"category":26,"related_article_id":27,"status":28,"google_indexed_at":29,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":30,"topic_cluster_id":34,"embedding":35,"is_canonical_seed":36},"7095f05c-34f5-469f-a044-2525d2010ce9","如何在正式環境加入 Temporal RAG","\u003Cp data-speakable=\"summary\">這篇教你在既有 \u003Ca href=\"\u002Ftag\u002Frag\">RAG\u003C\u002Fa> 中加入時間感知重排層，讓新版本、有效期間內的事件與最新資料優先被 \u003Ca href=\"\u002Ftag\u002Fllm\">LLM\u003C\u002Fa> 使用。\u003C\u002Fp>\u003Cp>這篇給正在做內容會隨時間變動的 RAG 系統開發者，像是文件、政策、教學、警報與客服知識庫。照著做完，你會得到一個可上線的時間層，能先排除過期資料、提高有效事件權重，並在不重建 retriever 的前提下偏好較新的版本。\u003C\u002Fp>\u003Cp>你也會建立一條清楚的分數路徑，介於向量搜尋與 LLM 之間，並能驗證舊文件不再壓過新文件。\u003C\u002Fp>\u003Ch2>開始之前\u003C\u002Fh2>\u003Cul>\u003Cli>Python 3.11+\u003C\u002Fli>\u003Cli>Node 20+，僅當你的應用外殼或 API 層使用 Node 時需要\u003C\u002Fli>\u003Cli>可用的 RAG 堆疊，搭配 Pinecone、Weaviate、pgvector 或 FAISS 其中之一\u003C\u002Fli>\u003Cli>文件中已有 \u003Ccode>created_at\u003C\u002Fcode>、\u003Ccode>updated_at\u003C\u002Fcode>，以及可選的 \u003Ccode>expires_at\u003C\u002Fcode> 欄位\u003C\u002Fli>\u003Cli>LLM API key，例如 OpenAI 或 Anthropic\u003C\u002Fli>\u003Cli>可存取參考實作的 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FEmmimal\u002Ftemporal-rag\u002F\">GitHub repo\u003C\u002Fa>，以及原始說明文的 \u003Ca href=\"https:\u002F\u002Ftowardsdatascience.com\u002Frag-is-blind-to-time-i-built-a-temporal-layer-to-fix-it-in-production\u002F\">Towards Data Science\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Step 1: 標記時間敏感文件\u003C\u002Fh2>\u003Cp>這一步的產出是文件清單，能把永不過期的事實、已被新版本取代的內容、以及有時間窗口的事件分開。時間層只有在知道文件屬於哪一類時，才會正確工作。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778667053844-osvs.png\" alt=\"如何在正式環境加入 Temporal RAG\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>先替每筆來源資料加上類型與有效性欄位。實用的結構如下：\u003C\u002Fp>\u003Cpre>\u003Ccode>kind: STATIC | VERSIONED | EVENT\nvalid_from: ISO-8601 timestamp\nvalid_to: ISO-8601 timestamp or null\nexpires_at: ISO-8601 timestamp or null\nsupersedes_id: optional document id\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該能指向任一文件，並說出它是永恆事實、已被新版本取代，或只在某段時間內有效。\u003C\u002Fp>\u003Ch2>Step 2: 把新鮮度欄位寫進索引\u003C\u002Fh2>\u003Cp>這一步的產出是可供重排使用的索引記錄。向量資料庫仍然負責語意搜尋，但它必須把 metadata 一起回傳，讓時間層能做判斷。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778667053085-3mg1.png\" alt=\"如何在正式環境加入 Temporal RAG\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>在資料匯入或更新時，把時間欄位寫進同一筆嵌入資料。若你已經有 pipeline，只要補欄位，不必更換 embedding model。\u003C\u002Fp>\u003Cpre>\u003Ccode>doc = {\n  \"id\": \"policy_v2\",\n  \"text\": \"API rate limits are now 200 requests per minute\",\n  \"kind\": \"VERSIONED\",\n  \"created_at\": \"2026-01-10T09:00:00Z\",\n  \"updated_at\": \"2026-03-01T12:00:00Z\",\n  \"valid_from\": \"2026-03-01T12:00:00Z\",\n  \"valid_to\": null,\n  \"supersedes_id\": \"policy_v1\"\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到每個被取回的 chunk 都帶著 metadata，而不只是文字與相似度分數。\u003C\u002Fp>\u003Ch2>Step 3: 在排序前先判定有效性\u003C\u002Fh2>\u003Cp>這一步的產出是前置判定器，會先移除過期事實，並把正在生效的時間事件標記出來，然後才交給 LLM。這是關鍵安全步驟，因為過期內容不該只是降權，而是要直接移除。\u003C\u002Fp>\u003Cp>你可以用三種狀態：EXPIRED、VALID、TEMPORAL。依照原始實作模式，只有 EVENT 文件才會變成 TEMPORAL。VERSIONED 文件在未被取代前都維持 VALID，舊版一旦被 supersede 就排除。\u003C\u002Fp>\u003Cpre>\u003Ccode>def classify(doc, now):\n    if doc.get(\"expires_at\") and doc[\"expires_at\"] &lt; now:\n        return \"EXPIRED\"\n    if doc[\"kind\"] == \"EVENT\" and doc.get(\"valid_from\") &lt;= now &lt;= doc.get(\"valid_to\"):\n        return \"TEMPORAL\"\n    return \"VALID\"\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到過期項目從候選集合中移除，而活躍警報被標成 TEMPORAL，不只是排得比較後面。\u003C\u002Fp>\u003Ch2>Step 4: 用時間衰減重排候選項\u003C\u002Fh2>\u003Cp>這一步的產出是結合語意相似度與新鮮度的重排器。目標不是讓時間壓過相關性，而是在多個近似匹配時，讓較新的內容更有優勢。\u003C\u002Fp>\u003Cp>實作上可以先正規化 cosine similarity，再依年齡套用指數衰減，並對有效事件加上額外提升。原始文章採用混合分數，讓最新且相關的文件勝出，但不會把所有新文件都推到最前面。\u003C\u002Fp>\u003Cpre>\u003Ccode>decay = 0.5 ** (age_in_days \u002F half_life_days)\nfinal_score = (0.7 * vector_score) + (0.3 * decay)\nif state == \"TEMPORAL\":\n    final_score *= 1.2\nif state == \"EXPIRED\":\n    final_score = 0.0\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到較新的政策壓過語意相近但較舊的政策，而在事件有效期間內，直播告警會跳到靜態文件前面。\u003C\u002Fp>\u003Ch2>Step 5: 把時間層接在 retriever 與 LLM 之間\u003C\u002Fh2>\u003Cp>這一步的產出是可上線的資料流，保留原本 retriever 不動，只在最後一段改寫候選順序。這樣風險低，也容易塞進既有系統。\u003C\u002Fp>\u003Cp>做法是先取 top-k 語意結果，再分類、重排，最後只把最終 context 傳給 LLM。這會保留你目前的 retriever，同時在最後一個責任點修正時間盲點。\u003C\u002Fp>\u003Cpre>\u003Ccode>candidates = retriever.search(query, top_k=20)\nscored = [score_candidate(c, now) for c in candidates]\nranked = sorted(scored, key=lambda x: x.final_score, reverse=True)\ncontext = [item.doc for item in ranked if item.state != \"EXPIRED\"]\nanswer = llm.generate(query, context)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到 prompt context 內是最新有效版本，而不是語意最像但最舊的 chunk。\u003C\u002Fp>\u003Ch2>Step 6: 測試舊答案失敗情境\u003C\u002Fh2>\u003Cp>這一步的產出是一組可重複執行的測試，專門驗證最重要的時間錯誤。重點不是一般 retrieval 測試，而是被取代的政策、已過期的教學，以及應該壓過其他資料的即時事件。\u003C\u002Fp>\u003Cp>先建立至少三種 fixtures：一個被 supersede 的文件、一個過期文件、以及一個正在生效的事件。接著同時檢查排序結果與排除行為。\u003C\u002Fp>\u003Cpre>\u003Ccode>assert \"policy_v1\" not in final_context\nassert final_rank[0].id == \"announcement_today\"\nassert any(item.state == \"TEMPORAL\" for item in ranked)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到舊版本被移除、活躍通知被提到前面，且最新有效文件排在前一版之前。\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>指標\u003C\u002Fth>\u003Cth>基準／優化前\u003C\u002Fth>\u003Cth>結果／優化後\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>排序行為\u003C\u002Ftd>\u003Ctd>舊政策因 cosine similarity 排第一\u003C\u002Ftd>\u003Ctd>最新有效政策在 temporal rerank 後排第一\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>過期內容處理\u003C\u002Ftd>\u003Ctd>過期文件仍留在前幾名\u003C\u002Ftd>\u003Ctd>過期文件在送進 LLM 前被移除\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>活躍事件處理\u003C\u002Ftd>\u003Ctd>即時通知排在靜態文件後面\u003C\u002Ftd>\u003Ctd>通知在有效期間內被提升到最前面\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>常見錯誤\u003C\u002Fh2>\u003Cul>\u003Cli>把所有文件都套用同一個新鮮度規則。修法：分開 STATIC、VERSIONED、EVENT，讓每種文件有自己的處理方式。\u003C\u002Fli>\u003Cli>只把過期事實降權，沒有真正移除。修法：在 rerank 或組 prompt 前先過濾 EXPIRED 項目。\u003C\u002Fli>\u003Cli>把每個較新的文件都當成緊急事件。修法：只對真正有時間窗口的事件套用 TEMPORAL 提升，不要套用到一般版本更新。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>接下來可以看什麼\u003C\u002Fh2>\u003Cp>當這套流程能跑之後，可以再加上來源別 half-life、排序決策的 \u003Ca href=\"\u002Fnews\u002Fanthropic-adds-12-claude-tools-for-legal-work-zh\">aud\u003C\u002Fa>it l\u003Ca href=\"\u002Fnews\u002Fgoogle-gemini-android-center-before-wwdc-zh\">og\u003C\u002Fa>，以及對使用者可讀的解釋，說明為\u003Ca href=\"\u002Fnews\u002Fwhy-ibm-bob-right-kind-ai-coding-assistant-zh\">什麼\u003C\u002Fa>某份文件勝過另一份。接著就能加入即時刷新、政策專屬過期規則，還有衡量舊答案下降幅度的評估集。\u003C\u002Fp>","這篇教你在既有 RAG 中加入時間感知重排層，讓新版本、有效期間內的事件與最新資料優先被 LLM 使用。","towardsdatascience.com","https:\u002F\u002Ftowardsdatascience.com\u002Frag-is-blind-to-time-i-built-a-temporal-layer-to-fix-it-in-production\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778667053844-osvs.png",[13,14,15,16,17],"RAG","temporal reranking","vector database","Python","LLM","zh",0,false,"2026-05-13T10:10:30.930982+00:00","2026-05-13T10:10:30.886+00:00","done","b3aa94b1-3fb0-41f3-9d18-d0e81be16be9","how-to-add-temporal-rag-in-production-zh","ai-agent","322ec8bc-61d3-4c80-bb9e-a19941e137c6","published","2026-05-14T09:00:18.067+00:00",[31,32,33],"先把文件分成 STATIC、VERSIONED、EVENT，再決定誰該被保留或排除。","把時間欄位寫進索引 metadata，讓向量搜尋後還能做時間重排。","過期內容要直接移除，活躍事件才加權，最後再送進 LLM。","e3b68196-9e64-4c18-a3b6-a73e73bfb367","[-0.003891757,0.03830474,-0.0030265555,-0.09034617,-0.028954998,0.012220877,-0.010306585,0.018512134,-0.010261716,-0.007028721,-0.011674869,-0.025254155,0.022589799,0.0048037707,0.11906713,0.02901244,0.000750525,0.023037301,-0.0060607963,-0.03398114,-0.012653103,-0.0040433337,-0.003294462,0.026433554,0.017577628,0.009196549,0.03184956,-0.010975117,0.054416507,-0.009525508,0.0058526266,0.0184982,0.015715566,0.009219588,-0.02488956,0.011521104,0.03148532,-0.028930513,0.008343304,0.014873817,0.004950877,0.014779824,0.020486264,-0.030068375,-0.012915012,0.0041096727,0.0033445943,-0.035755333,0.016058514,0.014723305,-0.0039469968,-0.0035534585,0.0025369162,-0.15117724,0.00026766153,0.0039350814,-0.0018966713,-0.0010610787,0.0023088246,0.014665793,0.004407025,0.025871925,-0.032781255,-0.01736132,0.003754886,0.00019044851,0.007798552,0.00060673436,-0.0021485866,-0.013174307,-0.0016275092,-0.023480682,-0.012211723,-0.02923139,0.013238749,-0.046531677,0.02125748,0.008692483,0.010434556,0.0009874547,0.01881536,-0.034690447,0.018274283,0.010133388,0.023443986,0.013330338,0.0062441714,0.008875283,0.0063306927,-0.008478247,-0.0049179625,0.021024456,0.0055225277,-0.0072859223,0.0074499403,0.009040743,-0.008532797,-0.01645841,0.009047693,-0.031841796,-0.012576871,-0.007899779,0.0063181184,0.025992012,0.013472437,0.005387648,0.0005971794,-0.00032678823,0.007161824,0.0029630268,0.015200835,0.0077969567,0.011371411,-0.01380263,-0.013892209,-0.12831572,0.009730535,0.010489472,-0.009209928,-0.02320712,-0.014960466,0.016901085,0.00731678,0.01753754,0.00022471292,-0.010226238,0.009528415,-0.025862321,0.013810741,0.018937329,0.0113081075,0.005502571,0.008998764,0.03743205,-0.0050865463,0.004416061,0.0066499924,0.009834233,-0.0035493225,-0.017894035,-0.017020445,0.05737581,-0.0027815378,-0.024055747,-0.008179766,-0.016905433,-0.03927644,0.00027594695,0.015379977,-0.03592402,0.014468021,-0.0060374816,-0.020510826,-0.0019817778,0.0085133305,-0.011118595,-0.0063634953,0.00771764,0.0077969646,0.006209002,-0.0007487547,-0.0008401134,0.021568904,0.027311306,0.022494469,0.02662691,-0.019058442,-0.0018648476,0.008700508,0.0049503506,-0.004430593,-0.02999227,-0.015677746,0.0229057,0.007891246,0.0055280686,-0.009920578,0.006855972,-0.00225458,-0.0047361637,0.022849174,-0.012665268,-0.019607885,-0.0030441931,0.0005481407,-0.00084230053,-0.006802892,0.002695624,0.020105166,-0.0030624054,-0.014911,0.0029506956,0.0025773582,0.006645193,-0.0050877747,-0.002497813,0.006434902,-0.0020612744,0.015153286,0.019264948,0.009575391,-0.011986278,0.0069763097,-0.032046758,0.024104252,-0.012427675,-0.021161035,-0.030543678,0.029763646,0.01295121,0.0051695765,0.005012688,-0.0025941783,-0.016842827,-0.002740371,-0.025297342,0.0057417853,-0.012197013,-0.0018931228,-0.021335153,0.010891144,0.005566839,0.02713762,0.020169491,-0.004564488,-0.012887324,-0.024009852,-0.0032777088,-0.010531198,0.009760625,0.034290064,0.0073495945,0.00024221142,0.024160912,-0.0080586,0.0046952907,-0.008903101,0.0014109968,-0.011625965,0.013970463,-0.017206214,0.024030028,-0.007963971,0.017532395,0.013035934,-0.020761555,0.0046868008,0.0044085053,-0.008138697,0.0075246245,-0.014680047,0.013409213,-0.0047514215,-0.024083696,0.0076127844,0.0053001684,-0.0043949024,-0.0019703365,0.012854044,0.017121866,-0.0068728863,0.012647688,-0.03461408,-0.007909246,-0.006383283,-0.001657258,0.026904942,0.0018096021,-0.02327188,-0.014768246,0.0074043837,0.013322674,0.015501382,0.0017756964,0.009385476,-0.008453864,-0.031772017,0.023855878,0.020051725,-0.0011241892,-0.022820039,-0.0020880552,0.030036157,0.011464677,-0.0046095387,0.023287404,0.0011477466,-0.0033246186,0.00905288,-0.009729648,0.01834896,0.026324276,0.0043014786,0.002562892,0.011240105,-0.020666223,-0.007651856,-0.010804412,0.0034380264,0.026027897,-0.011616105,0.0047471235,-0.0018901763,0.042815365,-0.0008818061,0.013644892,0.003462285,0.021936115,-0.008413026,-0.014757101,-0.0012785943,0.0076160515,-0.0134899905,-0.034362294,-0.0041302266,-0.019873343,0.0076639876,-0.018803986,-0.022143155,0.000491218,-0.011914879,-0.011979671,0.0072867135,0.0123973,-0.009402039,-0.029023042,0.00081681646,0.01340173,0.022568226,-0.012182842,0.016253216,0.011920085,0.037340917,0.0024930334,0.017164176,0.020526132,-0.023081018,-0.0051227803,-0.023368314,0.05094871,-0.0034839243,-0.0090538515,-0.037938904,-0.0037576517,-0.029662076,0.032635815,-0.001342426,0.010334565,-0.03014077,-0.06451009,0.020767136,0.011814573,0.016182061,-0.027494572,-0.031187076,-0.003019267,-0.03118028,-0.000137385,0.036415845,-0.004754598,-0.0022713812,0.0027361675,-0.026079737,0.0021248918,0.034991108,-0.027285965,0.015108463,0.04961078,-0.017506005,0.025669143,-0.007603187,-0.0011710457,0.026269417,-0.022419073,0.0059382995,0.0063283234,-0.01890229,-0.00913284,-0.009071724,-0.012925476,-0.003813373,0.026677726,-0.0066545955,-0.0123061715,-0.029137108,0.012188866,0.016244918,0.0028931045,0.008953995,0.0051071937,-0.014542857,0.016800582,0.0024974633,0.02217576,-0.022497667,-0.017888704,-0.011673716,-0.00045648142,-0.0048494455,-0.011731688,0.00040442377,-0.0026460602,-0.020431694,0.011459905,0.022442188,0.004709534,0.00036042233,-0.0032500762,-0.018774064,-0.014047765,0.020162003,0.0036137407,0.0057023815,0.007901628,0.03885052,-0.006169067,0.0139716435,0.0062895697,0.0120036,-0.0144543545,-0.030054629,0.015911236,-0.014146516,-0.0037956035,-0.009142249,-0.020006709,-0.031729992,-0.02224167,0.022622801,-0.029447652,0.016231146,-0.0303449,-0.0169366,-0.004849895,-0.014862297,-0.0072349627,-0.01254976,-0.007271725,-0.011487334,-0.01829093,0.006382919,0.011723662,-0.010673941,-0.005674926,-0.009683915,-0.0012337989,0.018539159,-0.0073139737,-0.041413933,0.004004219,0.0495988,-0.0010462245,0.0070542046,-0.02190771,-0.0068737194,-0.0010868636,-0.0072024656,0.008342356,-0.019271933,0.002656749,-0.0017099523,0.0010600452,0.007358773,0.025574522,0.0010577232,-0.012440798,-0.0022458287,-0.0024642788,-0.008178191,0.055450775,0.012166942,0.0070933066,-0.008031824,-0.022191556,0.022745173,0.012428607,0.0036168643,0.017105775,0.010411069,-0.015838705,0.0057718614,-0.025982296,-0.008473953,-0.009339805,0.0076735946,0.024769284,-0.0028609561,0.016145423,0.0073025622,0.011357014,-0.009721328,0.0201822,0.009118596,-0.0036258004,-0.017056063,0.002978424,0.027980616,-0.01807093,0.0004934418,0.005512678,0.01722182,0.025259854,0.00016097967,-0.028481463,-0.008246206,-0.01684507,-0.008092282,0.017641358,0.0473172,0.013837156,-0.009290721,0.01113925,0.010786126,0.010893147,-0.027914118,-0.013325755,0.008862588,0.01872927,-0.012249951,-0.0016934692,-0.009601163,-0.0019756474,-0.016582655,0.039290015,-0.015442518,-0.01619527,0.012705114,0.007695287,-0.003005564,0.009425394,-0.02166057,0.05065804,-0.008479906,-0.011404738,0.0115615195,0.013885581,-0.008851225,0.041358218,-0.023435006,0.024743771,-0.026611874,0.0038977745,-0.014009865,-0.018777868,0.025189532,-0.10867369,0.00044790324,0.005882426,0.021400338,-0.011698933,-0.018243954,0.0005339014,-0.0019987787,0.002855225,0.029375235,-0.015836677,0.005727961,0.059166733,0.014927234,-0.0066113113,-0.0065348605,-0.0013983736,-0.025822422,0.02303357,0.002917825,0.0013157432,-0.008802054,0.022002216,0.02646565,-0.013149358,0.00082421966,0.031453043,0.003699919,0.0069498178,-0.006691978,-0.0028362765,-0.019568436,0.0053482894,0.023667198,0.0049840487,0.0067988303,0.01040194,0.0034224903,0.021286786,-0.016429637,0.014530195,0.009397511,-0.022439267,-0.049987126,0.010641015,0.0006291899,0.013175467,-0.01737472,-0.0046238443,0.018132111,-0.031261895,-0.023009645,0.006590141,-0.026869984,0.0015038205,0.017767636,-0.024074584,0.016583493,-0.01256659,0.026663912,-0.018561576,-0.020308845,-0.0031140584,0.007783816,-0.039036855,-0.0058760205,-0.015839016,0.033103757,-0.009884182,0.013724605,0.014245326,-0.015512708,0.016755637,-0.022259956,-0.034222662,0.010186488,-0.012064958,0.005415265,-0.0041472055,-0.0060759415,-0.019312153,-0.0013095592,-0.07551889,-0.0068994462,-0.012335208,0.008889744,0.047278423,-0.015785025,0.029566253,-0.015800806,-0.012215178,-0.044240236,-0.019785676,-0.011732338,0.012061651,0.009720604,-0.010095471,0.029624347,0.0017895557,0.0015242875,0.00417893,-0.02956905,0.0022193356,0.006144444,0.004656709,-0.003857771,-0.021602105,0.020668842,-0.0030749866,-0.032029446,0.006055956,-0.022914615,-0.0136048235,-0.119352244,-0.031177571,0.012556624,-0.03408721,0.002783783,0.011415839,0.0039930674,0.004355951,-0.011588103,-0.0108951675,0.02213762,-0.029081317,-0.0046438947,0.002329185,-0.0063406397,0.12720546,0.020851836,0.0025855554,0.0023695948,-0.022744225,-0.009204903,-0.02791078,-0.009809052,0.021844069,0.011190126,0.0063051865,0.00968964,-0.005609852,-0.018940447,0.008263311,0.025970878,0.024909167,-0.0005536234,0.0062332656,0.019156463,0.011561219,-0.002509812,-0.035417255,0.012684462,-0.0027330285,0.011323785,0.0085612,0.011696148,-0.008945471,0.019250628,-0.0030674073,-0.02633048,-0.035202622,-0.011939797,-0.0024937268,0.0058273245,-0.082695715,0.003156572,-0.0095007615,-0.012707361,-0.0008036343,-0.008551395,0.0066647646,0.035583645,-0.0219964,0.03144305,-0.01016197,-0.007974642,0.011579319,-0.014950397,0.020794623,0.0017364614,0.020295845,0.014690945,-0.011081079,-0.008600274,0.02042194,-0.02681611,-0.0021665965,-0.025525512,-0.0061243866,-0.008829177,-0.006411983,0.014823522,-0.023452725,0.01538878,0.0057596937,-0.014414539,-0.018917028,0.005454872,0.003389522,-0.011633324,0.01448999,-0.0018932958,0.003543182,0.0036471921,0.012224288,-0.003326775,-0.0023615991,0.0035255875,0.010031099,-0.0052904882,0.042872615,-0.006525492,0.012430494,0.00014391683,-0.031049006,0.009238587,-0.026210397,0.013721078,0.015017014,0.013438266,0.0095064,0.0073597156,0.019371532]",true,[38,40,42,44,46],{"name":16,"slug":39},"python",{"name":13,"slug":41},"rag",{"name":17,"slug":43},"llm",{"name":14,"slug":45},"temporal-reranking",{"name":15,"slug":47},"vector-database",{"id":27,"slug":49,"title":50,"language":51},"how-to-add-temporal-rag-in-production-en","How to Add Temporal RAG in Production","en",[53,59,65,71,77,83],{"id":54,"slug":55,"title":56,"cover_image":57,"image_url":57,"created_at":58,"category":26},"38406a12-f833-4c69-ae22-99c31f03dd52","switch-ai-outputs-markdown-to-html-zh","怎麼把 AI 輸出改成 HTML","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778743243861-8901.png","2026-05-14T07:20:21.545364+00:00",{"id":60,"slug":61,"title":62,"cover_image":63,"image_url":63,"created_at":64,"category":26},"c7c69fe4-97e3-4edf-a9d6-a79d0c4495b4","anthropic-cat-wu-proactive-ai-assistants-zh","Cat Wu 談 Claude 的主動式 AI","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778735455993-gnw7.png","2026-05-14T05:10:30.453046+00:00",{"id":66,"slug":67,"title":68,"cover_image":69,"image_url":69,"created_at":70,"category":26},"e1d6acda-fa49-4514-aa75-709504be9f93","how-to-run-hermes-agent-on-discord-zh","如何在 Discord 執行 Hermes Agent","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778724655796-cjul.png","2026-05-14T02:10:34.362605+00:00",{"id":72,"slug":73,"title":74,"cover_image":75,"image_url":75,"created_at":76,"category":26},"4104fa5f-d95f-45c5-9032-99416cf0365c","why-ragflow-is-the-right-open-source-rag-engine-to-self-host-zh","為什麼 RAGFlow 是最適合自架的開源 RAG 引擎","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778674262278-1630.png","2026-05-13T12:10:23.762632+00:00",{"id":78,"slug":79,"title":80,"cover_image":81,"image_url":81,"created_at":82,"category":26},"10479c95-53c6-4723-9aaa-2fde5fb19ee7","github-agentic-workflows-ai-github-actions-zh","GitHub 把 AI 代理放進 Actions","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778551884342-8io7.png","2026-05-12T02:11:02.069769+00:00",{"id":84,"slug":85,"title":86,"cover_image":87,"image_url":87,"created_at":88,"category":26},"9ea2be05-4f86-4090-8e5e-2a615abf69cb","meta-google-ai-agent-race-agentic-wars-zh","Meta 和 Google 也要搶 AI Agent","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778530265459-vchf.png","2026-05-11T20:10:40.000158+00:00",[90,95,100,105,110,115,120,125,130,135],{"id":91,"slug":92,"title":93,"created_at":94},"4ae1e197-1d3d-4233-8733-eafe9cb6438b","claude-now-uses-your-pc-to-finish-tasks-zh","Claude 開始幫你操作電腦","2026-03-26T07:20:48.457387+00:00",{"id":96,"slug":97,"title":98,"created_at":99},"5bede67f-e21c-413d-9ab8-54a3c3d26227","googles-2026-ai-agent-report-decoded-zh","Google 2026 AI Agent 報告解讀","2026-03-26T11:15:22.651956+00:00",{"id":101,"slug":102,"title":103,"created_at":104},"2987d097-563f-46c7-b76f-b558d8ef7c2b","kimi-k25-review-stronger-still-not-legend-zh","Kimi K2.5 評測：更強，但還不是神作","2026-03-27T07:15:55.277513+00:00",{"id":106,"slug":107,"title":108,"created_at":109},"95c9053b-e3f4-4cb5-aace-5c54f4c9e044","claude-code-controls-mac-desktop-zh","Claude Code 也能操控 Mac 了","2026-03-28T03:01:58.58121+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"dc58e153-e3a8-4c06-9b96-1aa64eabbf5f","cloudflare-100x-faster-ai-agent-sandbox-zh","Cloudflare 的 AI 沙箱跑超快","2026-03-28T03:09:44.142236+00:00",{"id":116,"slug":117,"title":118,"created_at":119},"1c8afc56-253f-47a2-979f-1065ff072f2a","openai-backs-isara-agent-swarm-bet-zh","OpenAI 挺 Isara 的 agent swarm …","2026-03-28T03:15:27.513155+00:00",{"id":121,"slug":122,"title":123,"created_at":124},"7379b422-576e-45df-ad5a-d57a0d9dd467","openai-plan-automated-ai-researcher-zh","OpenAI 想做自動化 AI 研究員","2026-03-28T03:17:42.090548+00:00",{"id":126,"slug":127,"title":128,"created_at":129},"48c9889e-86df-450b-a356-e4a4b7c83c5b","harness-engineering-ai-agent-reliability-2026-zh","駕馭工程：從「馬具」到「作業系統」，AI Agent 可靠性的終極密碼","2026-03-31T06:42:53.556721+00:00",{"id":131,"slug":132,"title":133,"created_at":134},"e41546b8-ba9e-455f-9159-88d4614ad711","openai-codex-plugin-claude-code-zh","OpenAI 把 Codex 放進 Claude Code","2026-04-01T09:21:54.687617+00:00",{"id":136,"slug":137,"title":138,"created_at":139},"96d8e8c8-1edd-475d-9145-b1e7a1b02b65","mcp-explained-from-prompts-to-production-zh","MCP 怎麼把提示詞變工作流","2026-04-01T09:24:39.321274+00:00"]