{"id":207,"date":"2026-10-24T04:12:08","date_gmt":"2026-10-23T19:12:08","guid":{"rendered":"https:\/\/blog.himajin.ddo.jp\/?p=207"},"modified":"2026-10-24T05:04:58","modified_gmt":"2026-10-23T20:04:58","slug":"hindsight%e5%85%a5%e9%96%80%ef%bc%9aai%e3%81%ae%e4%bc%9a%e8%a9%b1%e3%82%92%e3%81%be%e3%81%9f%e3%81%84%e3%81%a7%e3%80%81%e5%bf%85%e8%a6%81%e3%81%aa%e8%a8%98%e6%86%b6%e3%82%92%e5%8f%96%e3%82%8a%e5%87%ba","status":"publish","type":"post","link":"https:\/\/blog.himajin.ddo.jp\/?p=207","title":{"rendered":"Hindsight\u3092Windows\u3067\u8a66\u3059\uff1aDocker\u306e\u6e96\u5099\u304b\u3089\u30e1\u30e2\u306e\u4fdd\u5b58\u30fb\u691c\u7d22\u307e\u3067"},"content":{"rendered":"\n<p>AI\u30a2\u30b7\u30b9\u30bf\u30f3\u30c8\u306b\u300c\u305d\u306e\u62c5\u5f53\u8005\u3001\u524d\u306b\u3082\u8a00\u3046\u305f\u3084\u3093\u300d\u3068\u601d\u3046\u3053\u3068\u3001\u306a\u3044\u3084\u308d\u304b\u3002\u305d\u306e\u8aac\u660e\u306e\u7e70\u308a\u8fd4\u3057\u3092\u6e1b\u3089\u3059\u4ed5\u7d44\u307f\u304c\u3001<a href=\"https:\/\/github.com\/vectorize-io\/hindsight\">Hindsight<\/a>\u3084\u3067\u3002\u4f1a\u8a71\u306a\u3069\u304b\u3089\u60c5\u5831\u3092\u4fdd\u5b58\u3057\u3001\u8cea\u554f\u306b\u95a2\u9023\u3059\u308b\u8a18\u61b6\u3092\u691c\u7d22\u3067\u304d\u308b\u3067\u3002\u524d\u306e\u4f1a\u8a71\u3082\u899a\u3048\u3066\u304f\u308c\u308b\u30a2\u30b7\u30b9\u30bf\u30f3\u30c8\u3092\u4f5c\u308a\u305f\u3044\u4eba\u306b\u5411\u3044\u3066\u308b\u3067\u3002<\/p>\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f<strong>Windows 11\u306ex64 PC\u306b\u4f55\u3082\u5165\u3063\u3066\u3044\u306a\u3044\u72b6\u614b\u304b\u3089\u3001\u67b6\u7a7a\u306e\u30e1\u30e2\u30921\u4ef6\u4fdd\u5b58\u3057\u3001\u62c5\u5f53\u8005\u3092\u691c\u7d22\u3059\u308b\u3068\u3053\u308d<\/strong>\u307e\u3067\u9032\u3081\u3066\u3044\u304f\u3067\u3002Docker\u3068Windows\u6a19\u6e96\u306ePowerShell\u3092\u4f7f\u3044\u3001Python\u3084Git\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3044\u3089\u3078\u3093\u3067\u3002\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\u306b\u7d44\u307f\u8fbc\u3080\u3093\u306f\u3001\u3053\u306e\u5c0f\u3055\u306a\u52d5\u4f5c\u78ba\u8a8d\u304c\u3067\u304d\u3066\u304b\u3089\u3084\u3002<\/p>\n<p><strong>\u3053\u306e\u8a18\u4e8b\u3067\u78ba\u304b\u3081\u305f\u3053\u3068\uff1a<\/strong>2026\u5e7410\u670824\u65e5\u6642\u70b9\u306e\u516c\u5f0f\u8cc7\u6599\u3067\u3001\u5c0e\u5165\u624b\u9806\u30fb\u30e2\u30c7\u30eb\u8a2d\u5b9a\u30fbAPI\u306e\u4f7f\u3044\u65b9\u30fb\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u78ba\u8a8d\u3057\u305f\u3067\u3002\u63b2\u8f09\u3057\u305fPowerShell\u306e\u66f8\u304d\u65b9\u3068JSON\u306e\u5f62\u5f0f\u3082\u78ba\u8a8d\u3057\u3066\u308b\u3067\u3002\u305f\u3060\u3001\u3053\u306e\u8a18\u4e8b\u3092\u66f8\u3044\u305fPC\u306b\u306fDocker\u304c\u5165\u3063\u3066\u3078\u3093\u306d\u3093\u3002\u305b\u3084\u304b\u3089\u3001\u8d77\u52d5\u304b\u3089\u6709\u6599API\u3092\u4f7f\u3063\u305f\u691c\u7d22\u307e\u3067\u3092\u3001\u5b9f\u969b\u306b\u52d5\u304b\u3057\u3066\u78ba\u304b\u3081\u305f\u308f\u3051\u3084\u306a\u3044\u3067\u3002\u3053\u306e\u3042\u3068\u306e\u300c\u6210\u529f\u306e\u76ee\u5b89\u300d\u306f\u3001\u81ea\u5206\u306ePC\u3067\u8a66\u3059\u3068\u304d\u306e\u30c1\u30a7\u30c3\u30af\u306b\u4f7f\u3063\u3066\u306a\u3002<\/p>\n<h2>\u4eca\u56de\u306e\u30b4\u30fc\u30eb\u3068\u74b0\u5883<\/h2>\n<ul><li><strong>\u4eca\u56de\u306e\u30b4\u30fc\u30eb\uff1a<\/strong>\u30ed\u30fc\u30ab\u30ebAPI\u304cHTTP 200\u3092\u8fd4\u3059 \u2192 \u30e1\u30e2\u4fdd\u5b58\u3067success\u304cTrue\u306b\u306a\u308b \u2192 \u691c\u7d22\u5019\u88dc\u306b\u300c\u30b5\u30f3\u30d7\u30eb\u793e\u306e\u62c5\u5f53\u8005\u306fA\u3055\u3093\u300d\u306b\u76f8\u5f53\u3059\u308b\u60c5\u5831\u304c\u542b\u307e\u308c\u308b\u3002<\/li><li><strong>PC\uff1a<\/strong>Docker Desktop\u304c\u5bfe\u5fdc\u3059\u308bWindows 11 x64\u3001\u30e1\u30e2\u30ea8GB\u4ee5\u4e0a\u3001\u4eee\u60f3\u5316\u304c\u6709\u52b9\u306a\u74b0\u5883\u3001\u5b89\u5b9a\u3057\u305f\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u63a5\u7d9a\u3002\u30a4\u30e1\u30fc\u30b8\u3068\u30e2\u30c7\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u7a7a\u304d\u5bb9\u91cf\u3092\u4f7f\u3046\u3067\u3002\u4e8b\u524d\u306b<a href=\"https:\/\/docs.docker.com\/desktop\/setup\/install\/windows-install\/\">Docker\u304c\u4f7f\u3048\u308b\u74b0\u5883<\/a>\u3082\u78ba\u8a8d\u3057\u3066\u306a\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Windows ARM\u3001Mac\u3001Linux\u3067\u306e\u64cd\u4f5c\u306f\u6271\u308f\u3078\u3093\u3067\u3002<\/li><li><strong>PC\u306e\u8a2d\u5b9a\uff1a<\/strong>WSL\u3092\u521d\u3081\u3066\u4f7f\u3046\u3068\u304d\u306f\u3001\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3084\u3067\u3002\u9014\u4e2d\u3067PC\u306e\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u306b\u306a\u308b\u3053\u3068\u3082\u3042\u308b\u3067\u3002\u4f1a\u793ePC\u3067\u306f\u7ba1\u7406\u8005\u306b\u76f8\u8ac7\u3057\u3066\u306a\u3002<\/li><li><strong>OpenAI API\uff1a<\/strong>\u30a2\u30ab\u30a6\u30f3\u30c8\u3068API\u30ad\u30fc\u3092\u7528\u610f\u3057\u3001gpt-4o-mini\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u652f\u6255\u3044\u65b9\u6cd5\u3084\u5229\u7528\u4e0a\u9650\u3092\u8a2d\u5b9a\u3057\u3066\u304a\u3044\u3066\u306a\u3002\u3053\u306e\u624b\u9806\u3067\u306fAPI\u306e\u5229\u7528\u6599\u304c\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308b\u3067\u3002<a href=\"https:\/\/developers.openai.com\/api\/docs\/pricing\">\u6599\u91d1\u8868<\/a>\u3067\u6761\u4ef6\u3092\u78ba\u8a8d\u3057\u3066\u306a\u3002<\/li><\/ul>\n<p>\u69cb\u6210\u306f\u300cPowerShell \u2192 \u81ea\u5206\u306ePC\u306eHindsight \u2192 \u5916\u90e8LLM\u300d\u3084\u3067\u3002\u8a18\u61b6\u306eDB\u306fDocker\u306e\u5c02\u7528\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u4fdd\u5b58\u3059\u308b\u3093\u3084\u3051\u3069\u3001\u60c5\u5831\u62bd\u51fa\u306a\u3069\u306e\u305f\u3081\u5165\u529b\u304c\u5916\u90e8LLM\u3078\u9001\u3089\u308c\u308b\u3093\u3084\u3002\u6700\u521d\u306f\u4e0b\u306e\u67b6\u7a7a\u30e1\u30e2\u3060\u3051\u3092\u4f7f\u3046\u3067\u3002<\/p>\n<h2>1\uff0eWSL\u30fbDocker Desktop\u306e\u5c0e\u5165<\/h2>\n<p>\u3059\u3067\u306bDocker\u304c\u4f7f\u3048\u308b\u5834\u5408\u3082\u3001\u6700\u5f8c\u306e\u78ba\u8a8d\u30b3\u30de\u30f3\u30c9\u3067Linux\u30b3\u30f3\u30c6\u30ca\u304c\u52d5\u304f\u72b6\u614b\u304b\u78ba\u304b\u3081\u3066\u304b\u3089\u6b21\u3078\u9032\u3093\u3067\u306a\u3002<\/p>\n<ol><li>Windows\u306e\u30b9\u30bf\u30fc\u30c8\u3092\u958b\u304d\u3001\u300cPowerShell\u300d\u3068\u691c\u7d22\u3057\u3066\u306a\u3002\u300cWindows PowerShell\u300d\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066<strong>\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c<\/strong>\u3057\u3001\u78ba\u8a8d\u753b\u9762\u3067\u8a31\u53ef\u3057\u3066\u306a\u3002<\/li><li>WSL\u304c\u307e\u3060\u5165\u3063\u3066\u3078\u3093\u306a\u3089\u3001\u6b21\u306e1\u884c\u3092\u8cbc\u308a\u4ed8\u3051\u3066Enter\u3092\u62bc\u3057\u3066\u306a\u3002\u672a\u4fdd\u5b58\u306e\u4f5c\u696d\u3092\u4fdd\u5b58\u3057\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5b8c\u4e86\u5f8c\u306bPC\u3092\u518d\u8d77\u52d5\u3057\u3066\u306a\u3002<\/li><\/ol><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>wsl --install<\/code><\/pre><p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3067WSL\u3068\u65e2\u5b9a\u306eUbuntu\u304c\u5165\u308b\u3067\u3002\u518d\u8d77\u52d5\u5f8c\u306bUbuntu\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u4f5c\u6210\u3092\u6c42\u3081\u3089\u308c\u305f\u3089\u3001\u753b\u9762\u306b\u5f93\u3063\u3066\u8a2d\u5b9a\u3057\u3066\u306a\u3002Linux\u5074\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u5165\u529b\u3067\u306f\u6587\u5b57\u304c\u8868\u793a\u3055\u308c\u3078\u3093\u3067\u3002\u3053\u306e\u3042\u3068\u306e\u30b3\u30de\u30f3\u30c9\u306fUbuntu\u3084\u306a\u304f\u3066\u3001Windows\u306ePowerShell\u3067\u5b9f\u884c\u3057\u3066\u306a\u3002\u3059\u3067\u306b\u5165\u3063\u3066\u308bWSL\u3092\u66f4\u65b0\u3059\u308b\u3068\u304d\u306f\u3001\u7ba1\u7406\u8005PowerShell\u3067<code>wsl --update<\/code>\u3092\u5b9f\u884c\u3057\u3066\u306a\u3002\u8a73\u7d30\u306f<a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\">Microsoft\u306eWSL\u5c0e\u5165\u624b\u9806<\/a>\u3092\u898b\u3066\u307f\u3066\u306a\u3002<\/p>\n<ol start=\"3\"><li><a href=\"https:\/\/docs.docker.com\/desktop\/setup\/install\/windows-install\/\">Docker Desktop\u306eWindows\u7528\u516c\u5f0f\u30da\u30fc\u30b8<\/a>\u3092\u30d6\u30e9\u30a6\u30b6\u30fc\u3067\u958b\u304d\u3001x86_64\u7528\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u306a\u3002\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f<code>Docker Desktop Installer.exe<\/code>\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u306a\u3002<\/li><li>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30a6\u30a3\u30b6\u30fc\u30c9\u306b\u5f93\u3044\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u9078\u629e\u304c\u51fa\u305f\u3068\u304d\u306f<strong>Use WSL 2 instead of Hyper-V<\/strong>\u3092\u9078\u3093\u3067\u306a\u3002\u518d\u8d77\u52d5\u3092\u6c42\u3081\u3089\u308c\u305f\u3068\u304d\u306f\u518d\u8d77\u52d5\u3057\u3066\u306a\u3002<\/li><li>\u30b9\u30bf\u30fc\u30c8\u304b\u3089<strong>Docker Desktop<\/strong>\u3092\u8d77\u52d5\u3057\u3066\u306a\u3002\u8868\u793a\u3055\u308c\u308b\u5229\u7528\u6761\u4ef6\u3092\u78ba\u8a8d\u3057\u3066\u9032\u307f\u3001\u30a8\u30f3\u30b8\u30f3\u306e\u8d77\u52d5\u3092\u5f85\u3063\u3066\u306a\u3002Docker Desktop\u306e\u5546\u7528\u5229\u7528\u6761\u4ef6\u306fHindsight\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3068\u306f\u5225\u3084\u3067\u3002<\/li><li>\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u305b\u305a\u3001\u3075\u3064\u3046\u306b\u65b0\u3057\u3044Windows PowerShell\u3092\u958b\u304d\u3001\u6b21\u306e3\u884c\u30921\u884c\u305a\u3064\u5b9f\u884c\u3057\u3066\u306a\u3002<\/li><\/ol><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>wsl --version\ndocker version\ndocker info --format &#39;{{.OSType}}&#39;<\/code><\/pre><p><strong>\u3053\u3053\u3067\u306e\u78ba\u8a8d\uff1a<\/strong>WSL\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u8868\u793a\u3055\u308c\u3001<code>docker version<\/code>\u3067Client\u3068Server\u306e\u4e21\u65b9\u304c\u78ba\u8a8d\u3067\u304d\u3001\u6700\u5f8c\u304c<code>linux<\/code>\u306a\u3089\u6b21\u3078\u9032\u3093\u3067\u3048\u3048\u3067\u3002<code>docker<\/code>\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u3068\u304d\u306fPowerShell\u3092\u9589\u3058\u3066\u958b\u304d\u76f4\u3057\u3066\u306a\u3002Server\u306b\u63a5\u7d9a\u3067\u304d\u306a\u3044\u3068\u304d\u306fDocker Desktop\u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u306a\u3002<code>windows<\/code>\u306a\u3089Docker Desktop\u306e\u30e1\u30cb\u30e5\u30fc\u3067Linux containers\u3078\u5207\u308a\u66ff\u3048\u3066\u306a\u3002\u4eee\u60f3\u5316\u306e\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u3068\u304d\u306f\u3001\u30bf\u30b9\u30af\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u306e\u300c\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9 \u2192 CPU \u2192 \u4eee\u60f3\u5316\u300d\u3068<a href=\"https:\/\/docs.docker.com\/desktop\/troubleshoot-and-support\/troubleshoot\/topics\/\">Docker\u306e\u30c8\u30e9\u30d6\u30eb\u5bfe\u51e6<\/a>\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u9032\u3081\u3066\u306a\u3002<\/p>\n<h2>2\uff0eOpenAI API\u30ad\u30fc\u306e\u8a2d\u5b9a<\/h2>\n<ol><li><a href=\"https:\/\/platform.openai.com\/\">OpenAI\u306e\u958b\u767a\u8005\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0<\/a>\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u306a\u3002\u672a\u767b\u9332\u306a\u3089\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u3001\u5fc5\u8981\u306a\u78ba\u8a8d\u3092\u6e08\u307e\u305b\u3066\u306a\u3002<\/li><li>\u8a2d\u5b9a\u306eBilling\u3067\u8acb\u6c42\u30fb\u6b8b\u9ad8\u30fb\u5229\u7528\u4e0a\u9650\u3092\u78ba\u8a8d\u3057\u3001\u4eca\u56de\u5229\u7528\u3059\u308b\u30e2\u30c7\u30eb\u304c\u4f7f\u3048\u308b\u72b6\u614b\u306b\u3057\u3066\u304a\u3044\u3066\u306a\u3002\u5229\u7528\u53ef\u5426\u3084\u521d\u56de\u306b\u5fc5\u8981\u306a\u8a2d\u5b9a\u306f\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u3088\u308a\u5909\u308f\u308b\u3067\u3002<\/li><li><a href=\"https:\/\/platform.openai.com\/api-keys\">API keys<\/a>\u3092\u958b\u304d\u3001\u65b0\u3057\u3044secret key\u3092\u4f5c\u3063\u3066\u306a\u3002\u540d\u524d\u306f\u4f8b\u3068\u3057\u3066<code>hindsight-demo<\/code>\u3068\u3057\u3001\u8868\u793a\u3055\u308c\u305f\u30ad\u30fc\u3092\u30b3\u30d4\u30fc\u3057\u3066\u306a\u3002\u30ad\u30fc\u306e\u4f5c\u6210\u3068\u4fdd\u7ba1\u306b\u3064\u3044\u3066\u306f<a href=\"https:\/\/developers.openai.com\/api\/docs\/quickstart\">OpenAI\u516c\u5f0f\u30af\u30a4\u30c3\u30af\u30b9\u30bf\u30fc\u30c8<\/a>\u3082\u898b\u3066\u307f\u3066\u306a\u3002<\/li><li>\u3055\u3063\u304d\u958b\u3044\u305f\u3001\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u3057\u3066\u3078\u3093PowerShell\u306b\u3001\u6b21\u306e\u30d6\u30ed\u30c3\u30af\u5168\u4f53\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u306a\u3002\u5165\u529b\u5f85\u3061\u306b\u306a\u3063\u305f\u3089\u81ea\u5206\u306e\u30ad\u30fc\u3092\u8cbc\u308a\u4ed8\u3051\u3001Enter\u3092\u62bc\u3057\u3066\u306a\u3002\u5165\u529b\u5185\u5bb9\u306f\u8868\u793a\u3055\u308c\u3078\u3093\u3067\u3002<\/li><\/ol><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>$secret = Read-Host &#39;OpenAI API\u30ad\u30fc\u3092\u8cbc\u308a\u4ed8\u3051\u3066Enter&#39; -AsSecureString\n$env:HINDSIGHT_API_LLM_API_KEY = [System.Net.NetworkCredential]::new(&#39;&#39;, $secret).Password\nRemove-Variable secret\nif ([string]::IsNullOrWhiteSpace($env:HINDSIGHT_API_LLM_API_KEY)) {\n    throw &#39;API\u30ad\u30fc\u304c\u7a7a\u3067\u3059\u3002\u3082\u3046\u4e00\u5ea6\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002&#39;\n}<\/code><\/pre><p>\u8a18\u4e8b\u4e2d\u306b\u30ad\u30fc\u3092\u76f4\u63a5\u66f8\u304d\u63db\u3048\u308b\u5834\u6240\u306f\u306a\u3044\u3067\u3002\u3053\u306e\u65b9\u6cd5\u306f\u30ad\u30fc\u305d\u306e\u3082\u306e\u3092\u30b3\u30de\u30f3\u30c9\u5c65\u6b74\u3078\u76f4\u63a5\u66f8\u304b\u305a\u3001\u73fe\u5728\u306ePowerShell\u306e\u74b0\u5883\u5909\u6570\u306b\u6e21\u3059\u3093\u3084\u3002\u305f\u3060\u3057\u3001\u8d77\u52d5\u5f8c\u306e\u30b3\u30f3\u30c6\u30ca\u8a2d\u5b9a\u306b\u306f\u30ad\u30fc\u304c\u6b8b\u308a\u3001Docker\u3092\u64cd\u4f5c\u3067\u304d\u308b\u4eba\u306f\u53c2\u7167\u3067\u304d\u308b\u305f\u3081\u3001\u5171\u6709PC\u3067\u306e\u79d8\u5bc6\u7ba1\u7406\u65b9\u6cd5\u3068\u3057\u3066\u306f\u4f7f\u308f\u3093\u3068\u3044\u3066\u306a\u3002<\/p>\n<h2>3\uff0eHindsight\u306e\u8d77\u52d5\u3068\u63a5\u7d9a\u78ba\u8a8d<\/h2>\n<p><strong>\u540c\u3058PowerShell<\/strong>\u3067\u3001\u4e0b\u306e\u30d6\u30ed\u30c3\u30af\u3092\u305d\u306e\u307e\u307e\u8cbc\u308a\u4ed8\u3051\u3066\u5b9f\u884c\u3057\u3066\u306a\u3002\u9014\u4e2d\u306e\u884c\u306b\u300c&gt;\u300d\u3084\u300cPS C:\u300d\u3068\u3044\u3063\u305f\u8868\u793a\u306f\u8ffd\u52a0\u305b\u3093\u3067\u3048\u3048\u3002\u516c\u5f0f\u306eDocker\u69cb\u6210\u3092PowerShell\u5411\u3051\u306b\u66f8\u304d\u76f4\u3057\u3001\u7df4\u7fd2\u7528\u306e\u540d\u524d\u3068\u4fdd\u5b58\u5148\u3092\u4f7f\u3046\u3067\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>$dockerArgs = @(\n    &#39;run&#39;, &#39;-d&#39;, &#39;--pull&#39;, &#39;always&#39;,\n    &#39;--name&#39;, &#39;hindsight-demo&#39;, &#39;--shm-size=1g&#39;,\n    &#39;-p&#39;, &#39;127.0.0.1:8888:8888&#39;,\n    &#39;-p&#39;, &#39;127.0.0.1:9999:9999&#39;,\n    &#39;-e&#39;, &#39;HINDSIGHT_API_LLM_PROVIDER=openai&#39;,\n    &#39;-e&#39;, &#39;HINDSIGHT_API_LLM_MODEL=gpt-4o-mini&#39;,\n    &#39;-e&#39;, &#39;HINDSIGHT_API_LLM_API_KEY&#39;,\n    &#39;-e&#39;, &#39;HINDSIGHT_API_WORKER_ID=hindsight-demo&#39;,\n    &#39;-v&#39;, &#39;hindsight-demo-data:\/home\/hindsight\/.pg0&#39;,\n    &#39;ghcr.io\/vectorize-io\/hindsight:latest&#39;\n)\ndocker @dockerArgs\nif ($LASTEXITCODE -ne 0) { throw &#39;\u8d77\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u4e0b\u306e\u30c8\u30e9\u30d6\u30eb\u5bfe\u51e6\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002&#39; }\nRemove-Item Env:HINDSIGHT_API_LLM_API_KEY\ndocker ps --filter &#39;name=hindsight-demo&#39;<\/code><\/pre><p>\u521d\u56de\u306f\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3068\u521d\u671f\u5316\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u3067\u3002<code>-d<\/code>\u306f\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u8d77\u52d5\u3001<code>127.0.0.1<\/code>\u306f\u3053\u306ePC\u304b\u3089\u306e\u63a5\u7d9a\u3001<code>hindsight-demo-data<\/code>\u306f\u8a18\u61b6\u3092\u6b8b\u3059\u4fdd\u5b58\u9818\u57df\u3084\u3067\u3002\u4eca\u56de\u306f\u52d5\u4f5c\u3092\u8a66\u3059\u3060\u3051\u306a\u306e\u3067PC\u8d77\u52d5\u6642\u306e\u81ea\u52d5\u518d\u958b\u306f\u8a2d\u5b9a\u3057\u3066\u3078\u3093\u3067\u3002\u57cb\u3081\u8fbc\u307fDB\u30fb\u57cb\u3081\u8fbc\u307f\u30e2\u30c7\u30eb\u7b49\u3092\u542b\u3080full\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u3044\u3001\u5225\u306bPostgreSQL\u3092\u5c0e\u5165\u3059\u308b\u624b\u9806\u3092\u7701\u3044\u3066\u308b\u3067\u3002LLM\u306f\u5916\u90e8API\u3092\u4f7f\u3046\u3093\u3084\u3002<\/p>\n<p><code>docker ps<\/code>\u306e\u4e00\u89a7\u306b<code>hindsight-demo<\/code>\u304c\u3042\u308a\u3001STATUS\u304c<code>Up<\/code>\u306b\u306a\u3063\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u306a\u3002\u7d9a\u3044\u3066\u3001\u6e96\u5099\u5b8c\u4e86\u3092\u78ba\u8a8d\u3057\u3066\u306a\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>try {\n    (Invoke-WebRequest -UseBasicParsing -Uri &#39;http:\/\/localhost:8888\/health&#39; -TimeoutSec 10).StatusCode\n} catch {\n    Write-Host &#39;\u6e96\u5099\u4e2d\u307e\u305f\u306f\u8d77\u52d5\u5931\u6557\u3067\u3059\u3002docker logs --tail 80 hindsight-demo \u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002&#39;\n}<\/code><\/pre><p><strong>200\u304c\u8868\u793a\u3055\u308c\u308c\u3070\u3001\u6b21\u3078\u9032\u3081\u3089\u308c\u308b\u3067\u3002<\/strong>\u6e96\u5099\u4e2d\u306a\u3089\u5c11\u3057\u5f85\u3063\u3066\u540c\u3058\u78ba\u8a8d\u3092\u3084\u308a\u76f4\u3057\u3066\u306a\u3002\u8d77\u52d5\u3057\u3066\u3044\u308b\u3060\u3051\u3067\u306fLLM\u306e\u30ad\u30fc\u304c\u6b63\u3057\u3044\u3068\u306f\u9650\u3089\u3078\u3093\u3067\u3002\u30ad\u30fc\u306e\u78ba\u8a8d\u306f\u6b21\u306e\u4fdd\u5b58\u64cd\u4f5c\u307e\u3067\u9032\u3081\u3066\u884c\u3046\u3067\u3002\u30d6\u30e9\u30a6\u30b6\u30fc\u306e\u30a2\u30c9\u30ec\u30b9\u6b04\u306b<code>http:\/\/localhost:9999<\/code>\u3092\u5165\u529b\u3059\u308b\u3068\u7ba1\u7406\u753b\u9762\u3082\u958b\u3051\u308b\u3067\u3002\u4eca\u56de\u306e\u4fdd\u5b58\u30fb\u691c\u7d22\u306f\u753b\u9762\u306e\u540d\u79f0\u5909\u66f4\u306b\u5de6\u53f3\u3055\u308c\u306b\u304f\u3044HTTP API\u3067\u884c\u3046\u3067\u3002<\/p>\n<p>\u5229\u7528\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u5f8c\u3067\u78ba\u8a8d\u3059\u308b\u3068\u304d\u306f\u3001<code>docker inspect --format '{{.Image}}' hindsight-demo<\/code>\u3092\u5b9f\u884c\u3057\u3066ID\u3092\u63a7\u3048\u3066\u306a\u3002<code>latest<\/code>\u306f\u66f4\u65b0\u3055\u308c\u308b\u30bf\u30b0\u306a\u306e\u3067\u3001\u5225\u306e\u65e5\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u304c\u540c\u3058\u5185\u5bb9\u3068\u306f\u9650\u3089\u3078\u3093\u3067\u3002<\/p>\n<h2>4\uff0e\u7df4\u7fd2\u7528\u30d0\u30f3\u30af\u306e\u4f5c\u6210\u3068\u30e1\u30e2\u306e\u4fdd\u5b58<\/h2>\n<p>\u4ee5\u4e0b\u3082\u3001\u8d77\u52d5\u6642\u3068\u540c\u3058PowerShell\u3067\u9806\u756a\u306b\u5b9f\u884c\u3057\u3066\u306a\u3002\u307e\u305a\u3001\u307b\u304b\u306e\u30c7\u30fc\u30bf\u3068\u6df7\u305c\u306a\u3044\u5c02\u7528Memory Bank\u3092\u4f5c\u3063\u3066\u306a\u3002\u30d0\u30f3\u30af\u306f\u60c5\u5831\u3092\u5206\u3051\u308b\u4fdd\u5b58\u7bb1\u3084\u3067\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>$bank = &#39;first-memory-demo&#39;\n$base = &quot;http:\/\/localhost:8888\/v1\/default\/banks\/$bank&quot;\nInvoke-RestMethod -Method Put -Uri $base -ContentType &#39;application\/json&#39; -Body &#39;{}&#39;<\/code><\/pre><p>HTTP\u30a8\u30e9\u30fc\u304c\u51fa\u305a\u5fdc\u7b54\u304c\u8fd4\u308c\u3070\u3001\u6b21\u306e\u67b6\u7a7a\u30e1\u30e2\u3092\u767b\u9332\u3057\u3066\u306a\u3002JSON\u306e\u65e5\u672c\u8a9e\u3092UTF-8\u306e\u30d0\u30a4\u30c8\u5217\u3067\u6e21\u3059\u305f\u3081\u3001Windows PowerShell\u3067\u3082\u6587\u5b57\u30b3\u30fc\u30c9\u306e\u9055\u3044\u3092\u907f\u3051\u3089\u308c\u308b\u3067\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>$memo = &#39;\u67b6\u7a7a\u306e\u30b5\u30f3\u30d7\u30eb\u793e\u306e\u62c5\u5f53\u8005\u306fA\u3055\u3093\u3067\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u793e\u306e\u6253\u3061\u5408\u308f\u305b\u5834\u6240\u306f\u7b2c2\u4f1a\u8b70\u5ba4\u3067\u3059\u3002&#39;\n$body = @{\n    items = @(@{\n        content = $memo\n        document_id = &#39;sample-note-001&#39;\n    })\n    async = $false\n} | ConvertTo-Json -Depth 6\n$saved = Invoke-RestMethod -Method Post -Uri &quot;$base\/memories&quot; -ContentType &#39;application\/json; charset=utf-8&#39; -Body ([Text.Encoding]::UTF8.GetBytes($body)) -TimeoutSec 300\n$saved | Select-Object success, bank_id, items_count, async\nif ($saved.success -ne $true) { throw &#39;\u4fdd\u5b58\u6210\u529f\u3092\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002&#39; }<\/code><\/pre><p><strong>\u4fdd\u5b58\u6210\u529f\u306e\u76ee\u5b89\uff1a<\/strong><code>success<\/code>\u304c<code>True<\/code>\u3001<code>bank_id<\/code>\u304c<code>first-memory-demo<\/code>\u3001<code>items_count<\/code>\u304c<code>1<\/code>\u3001<code>async<\/code>\u304c<code>False<\/code>\u3084\u3067\u3002\u3053\u308c\u306f\u671f\u5f85\u3059\u308b\u9805\u76ee\u3067\u3001\u5b9f\u969b\u306e\u5b9f\u884c\u7d50\u679c\u3092\u8f09\u305b\u305f\u3082\u306e\u3084\u306a\u3044\u3067\u3002\u3053\u3053\u3067\u306f\u3001\u4fdd\u5b58\u304c\u7d42\u308f\u308b\u307e\u3067\u5f85\u3064\u8a2d\u5b9a\u306b\u3057\u3066\u308b\u3067\u30021\u4ef6\u306e\u30e1\u30e2\u304b\u3089\u8907\u6570\u306e\u4e8b\u5b9f\u3092\u62bd\u51fa\u3059\u308b\u5834\u5408\u304c\u3042\u308b\u305f\u3081\u3001<code>items_count<\/code>\u3092\u691c\u7d22\u5019\u88dc\u306e\u4ef6\u6570\u3068\u540c\u3058\u3082\u306e\u3084\u3068\u601d\u308f\u3093\u3068\u3044\u3066\u306a\u3002<\/p>\n<p>\u540c\u3058<code>document_id<\/code>\u3067\u518d\u767b\u9332\u3059\u308b\u3068\u5143\u306e\u6587\u66f8\u3092\u7f6e\u304d\u63db\u3048\u308b\u4ed5\u69d8\u3084\u3067\u3002\u3046\u307e\u304f\u3044\u304b\u306a\u3044\u304b\u3089\u3068\u4f55\u5ea6\u3082\u9001\u4fe1\u3059\u308b\u3068\u8ffd\u52a0\u306eAPI\u8cbb\u7528\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308b\u3067\u3002\u307e\u305a\u30ed\u30b0\u3068\u5fdc\u7b54\u3092\u78ba\u8a8d\u3057\u3066\u306a\u3002<\/p>\n<h2>5\uff0e\u4fdd\u5b58\u3057\u305f\u30e1\u30e2\u306e\u691c\u7d22<\/h2>\n<p>\u4fdd\u5b58\u304c\u6210\u529f\u3057\u305f\u5f8c\u3001\u6b21\u306e\u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3057\u3066\u306a\u3002\u4eca\u56de\u306f\u3001\u65b0\u3057\u304f\u56de\u7b54\u306e\u6587\u7ae0\u3092\u4f5c\u308b<code>reflect<\/code>\u3084\u306a\u304f\u3066\u3001\u4fdd\u5b58\u3057\u305f\u8a18\u61b6\u306e\u5019\u88dc\u3092\u53d6\u308a\u51fa\u3059<code>recall<\/code>\u3092\u8a66\u3057\u3066\u307f\u3088\u304b\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>$query = @{ query = &#39;\u30b5\u30f3\u30d7\u30eb\u793e\u306e\u62c5\u5f53\u8005\u306f\u8ab0\u3067\u3059\u304b&#39;; types = @(&#39;world&#39;, &#39;experience&#39;) } | ConvertTo-Json\n$found = Invoke-RestMethod -Method Post -Uri &quot;$base\/memories\/recall&quot; -ContentType &#39;application\/json; charset=utf-8&#39; -Body ([Text.Encoding]::UTF8.GetBytes($query)) -TimeoutSec 120\nWrite-Host (&#39;\u691c\u7d22\u5019\u88dc\u6570: &#39; + @($found.results).Count)\n$found.results | Select-Object text, document_id | Format-List<\/code><\/pre><p><strong>\u691c\u7d22\u6210\u529f\u306e\u76ee\u5b89\uff1a<\/strong>\u5019\u88dc\u304c1\u4ef6\u4ee5\u4e0a\u3042\u308a\u3001\u8868\u793a\u3055\u308c\u305f<code>text<\/code>\u306e\u3069\u308c\u304b\u306b\u3001\u4fdd\u5b58\u3057\u305f\u300c\u30b5\u30f3\u30d7\u30eb\u793e\u306e\u62c5\u5f53\u8005\u306fA\u3055\u3093\u300d\u306b\u76f8\u5f53\u3059\u308b\u60c5\u5831\u304c\u3042\u308b\u3053\u3068\u3084\u3067\u3002\u62bd\u51fa\u5f8c\u306e\u6587\u7ae0\u3084\u8a00\u8a9e\u3001\u4ef6\u6570\u306f\u56fa\u5b9a\u3084\u306a\u3044\u3067\u3002\u4fdd\u5b58\u3057\u305f\u30e1\u30e2\u3068\u7167\u3089\u3057\u5408\u308f\u305b\u3066\u306a\u3002\u5019\u88dc\u304c\u8fd4\u3063\u3066\u3082\u3001\u5185\u5bb9\u304c\u6b63\u3057\u3044\u3068\u306f\u9650\u3089\u3078\u3093\u3067\u3002<\/p>\n<p>\u5019\u88dc\u304c\u7a7a\u306a\u3089\u3001\u4fdd\u5b58\u304c\u6210\u529f\u3057\u3066\u3044\u305f\u304b\u78ba\u8a8d\u3057\u3001\u6b21\u306e\u4e00\u89a7\u53d6\u5f97\u3067\u767b\u9332\u5185\u5bb9\u3092\u898b\u3066\u307f\u3066\u306a\u3002\u305d\u306e\u5f8c\u3001\u691c\u7d22\u30d6\u30ed\u30c3\u30af\u306e\u8cea\u554f\u3092\u300c\u30b5\u30f3\u30d7\u30eb\u793e\u300d\u3078\u5909\u3048\u3066\u3082\u3046\u4e00\u5ea6\u78ba\u8a8d\u3057\u3066\u306a\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>$listed = Invoke-RestMethod -Uri &quot;$base\/memories\/list?limit=20&quot;\n$listed.items | Select-Object text | Format-List<\/code><\/pre><p>\u3082\u3046\u4e00\u554f\u8a66\u3059\u306a\u3089\u3001\u8cea\u554f\u3092\u300c\u30b5\u30f3\u30d7\u30eb\u793e\u306e\u6253\u3061\u5408\u308f\u305b\u5834\u6240\u306f\u3069\u3053\u3067\u3059\u304b\u300d\u3078\u5909\u3048\u3066\u3001\u691c\u7d22\u30d6\u30ed\u30c3\u30af\u5168\u4f53\u3092\u518d\u5b9f\u884c\u3057\u3066\u306a\u3002\u7b2c2\u4f1a\u8b70\u5ba4\u306b\u76f8\u5f53\u3059\u308b\u60c5\u5831\u304c\u62fe\u3048\u308b\u304b\u78ba\u8a8d\u3057\u3066\u306a\u3002\u7121\u95a2\u4fc2\u306a\u8cea\u554f\u3067\u306f\u3001\u5019\u88dc\u304c\u8fd4\u3063\u3066\u3082\u8cea\u554f\u306e\u7b54\u3048\u3068\u306f\u9650\u3089\u306a\u3044\u3053\u3068\u3092\u78ba\u304b\u3081\u3066\u307f\u3066\u306a\u3002<\/p><h2 id=\"hs-architecture\">\u30b7\u30b9\u30c6\u30e0\u69cb\u6210\u3068\u30c7\u30fc\u30bf\u306e\u6d41\u308c<\/h2>\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u64cd\u4f5c\u3057\u3066\u3044\u308b<strong>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306fPowerShell<\/strong>\u3084\u3067\u3002\u30b3\u30de\u30f3\u30c9\u306fPC\u5185\u306eHindsight API\u3078\u9001\u3089\u308c\u308b\u3093\u3084\u3002<strong>Docker\u306fHindsight\u3068DB\u3092\u52d5\u304b\u3059\u5165\u308c\u7269<\/strong>\u3067\u3001<strong>OpenAI API\u306fHindsight\u304b\u3089\u547c\u3073\u51fa\u3059\u5916\u90e8\u306eLLM<\/strong>\u3084\u3067\u3002\u8a18\u61b6\u3092\u6b8b\u3059\u5834\u6240\u306f\u3001\u3053\u306e\u4f8b\u3067\u306f\u81ea\u5206\u306ePC\u5074\u306b\u3042\u308bDocker\u306e\u5c02\u7528\u30dc\u30ea\u30e5\u30fc\u30e0\u3084\u3067\u3002<\/p>\n<style>\n.hs-diagram-wrap{overflow-x:auto;margin:16px 0;border:1px solid #b7cbd7;border-radius:12px;background:#fff;color:#173b52}.hs-diagram-wrap svg{display:block;width:100%;min-width:760px;height:auto;font-family:system-ui,sans-serif;fill:#173b52}.hs-explainer{padding:15px;margin:22px 0;border:1px solid #b7cbd7;border-radius:12px;background:#f6fafc;color:#173b52}.hs-explainer summary{cursor:pointer;font-weight:700;padding:8px}.hs-explainer label{margin-left:7px}.hs-explainer .moving{animation-duration:16s;animation-timing-function:linear;animation-fill-mode:both}.hs-explainer input:checked~.hs-diagram-wrap .moving{animation-play-state:paused!important}\n#hs-save[open] .memo{animation-name:hs-memo}#hs-save[open] .fact{animation-name:hs-fact}#hs-save[open] .stored{animation-name:hs-stored}#hs-save[open] .ack{animation-name:hs-ack}\n@keyframes hs-memo{0%{opacity:1;transform:translate(0,0)}20%,27%{opacity:1;transform:translate(300px,0)}43%,46%{opacity:1;transform:translate(740px,0)}47%,100%{opacity:0;transform:translate(740px,0)}}\n@keyframes hs-fact{0%,46%{opacity:0;transform:translate(0,0)}47%,51%{opacity:1;transform:translate(0,0)}66%,70%{opacity:1;transform:translate(-440px,0)}82%{opacity:1;transform:translate(-410px,201px)}83%,100%{opacity:0;transform:translate(-410px,201px)}}\n@keyframes hs-stored{0%,81%{opacity:0}83%,100%{opacity:1}}\n@keyframes hs-ack{0%,82%{opacity:0;transform:translate(300px,0)}83%{opacity:1;transform:translate(300px,0)}98%,100%{opacity:1;transform:translate(0,0)}}\n#hs-recall[open] .query{animation-name:hs-query}#hs-recall[open] .found{animation-name:hs-found}#hs-recall[open] .result{animation-name:hs-result}\n@keyframes hs-query{0%{opacity:1;transform:translate(0,0)}25%,33%{opacity:1;transform:translate(300px,0)}50%{opacity:1;transform:translate(330px,201px)}51%,100%{opacity:0;transform:translate(330px,201px)}}\n@keyframes hs-found{0%,50%{opacity:0;transform:translate(0,0)}51%{opacity:1;transform:translate(0,0)}70%{opacity:1;transform:translate(-30px,-201px)}85%{opacity:1;transform:translate(-330px,-201px)}86%,100%{opacity:0;transform:translate(-330px,-201px)}}\n@keyframes hs-result{0%,84%{opacity:0}86%,100%{opacity:1}}\n@media(prefers-reduced-motion:reduce){.hs-explainer .moving{animation:none!important}.hs-explainer .memo,.hs-explainer .fact,.hs-explainer .query,.hs-explainer .found{display:none}.hs-explainer .stored,.hs-explainer .ack,.hs-explainer .result{opacity:1}}\n<\/style>\n<figure style=\"margin:20px 0\"><div class=\"hs-diagram-wrap\"><svg viewBox=\"0 0 1000 630\" role=\"img\" aria-label=\"\u81ea\u5206\u306eWindows PC\u5185\u306ePowerShell\u304b\u3089Docker\u5185\u306eHindsight\u3078\u63a5\u7d9a\u3057\u3001Hindsight\u304c\u5916\u90e8\u306eOpenAI API\u3092\u547c\u3073\u51fa\u3059\u69cb\u6210\u3002\u8a18\u61b6\u306fPC\u5185\u306eDocker\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u6b8b\u308b\u3002\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs><marker id=\"hs-arch-arrow\" markerWidth=\"9\" markerHeight=\"9\" refX=\"8\" refY=\"4\" orient=\"auto-start-reverse\"><path d=\"M0 0L8 4L0 8Z\" fill=\"#277a83\"\/><\/marker><\/defs>\n<rect x=\"10\" y=\"30\" width=\"720\" height=\"580\" rx=\"18\" fill=\"#edf5fc\" stroke=\"#6c98bf\" stroke-width=\"2\"\/>\n<text x=\"30\" y=\"66\" font-size=\"25\" font-weight=\"700\">\u81ea\u5206\u306eWindows PC<\/text>\n<rect x=\"310\" y=\"95\" width=\"390\" height=\"420\" rx=\"14\" fill=\"#fff\" stroke=\"#3775a3\" stroke-width=\"2\" stroke-dasharray=\"8 5\"\/>\n<text x=\"330\" y=\"126\" font-size=\"22\" font-weight=\"700\">Docker\uff1ahindsight-demo<\/text>\n<rect x=\"35\" y=\"155\" width=\"225\" height=\"175\" rx=\"12\" fill=\"#173b52\"\/>\n<text x=\"52\" y=\"188\" font-size=\"24\" fill=\"#fff\" font-weight=\"700\">PowerShell<\/text>\n<text x=\"52\" y=\"218\" font-size=\"19\" fill=\"#fff\">\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\uff08\u64cd\u4f5c\u5f79\uff09<\/text>\n<text x=\"52\" y=\"258\" font-size=\"19\" fill=\"#fff\">\u30e1\u30e2\u3092\u9001\u308b\uff0f\u8cea\u554f\u3059\u308b<\/text>\n<text x=\"52\" y=\"305\" font-size=\"18\" fill=\"#bfe5f1\">Invoke-RestMethod<\/text>\n<rect x=\"345\" y=\"155\" width=\"315\" height=\"175\" rx=\"12\" fill=\"#e3f5f0\" stroke=\"#277a83\" stroke-width=\"2\"\/>\n<text x=\"363\" y=\"188\" font-size=\"25\" font-weight=\"700\">Hindsight API<\/text>\n<text x=\"363\" y=\"218\" font-size=\"19\">localhost:8888\u3067\u53d7\u3051\u4ed8\u3051\u308b<\/text>\n<text x=\"363\" y=\"258\" font-size=\"19\">\u4fdd\u5b58\u30fb\u691c\u7d22\u3092\u53d6\u308a\u307e\u3068\u3081\u308b<\/text>\n<text x=\"363\" y=\"305\" font-size=\"18\">\u3053\u3053\u304cOpenAI\u306e\u30ad\u30fc\u3092\u4f7f\u3046<\/text>\n<rect x=\"780\" y=\"155\" width=\"210\" height=\"175\" rx=\"18\" fill=\"#fff0df\" stroke=\"#bc733b\" stroke-width=\"2\"\/>\n<text x=\"797\" y=\"188\" font-size=\"24\" font-weight=\"700\">OpenAI API<\/text>\n<text x=\"797\" y=\"218\" font-size=\"19\">\u5916\u90e8\u30b5\u30fc\u30d3\u30b9<\/text>\n<text x=\"797\" y=\"258\" font-size=\"19\">LLM\u3067\u60c5\u5831\u3092\u51e6\u7406<\/text>\n<text x=\"797\" y=\"305\" font-size=\"18\">\u4f8b\uff1agpt-4o-mini<\/text>\n<g fill=\"none\" stroke=\"#277a83\" stroke-width=\"3\" marker-end=\"url(#hs-arch-arrow)\">\n<path d=\"M260 250H340\"\/><path d=\"M345 310H265\"\/><path d=\"M660 250H775\"\/><path d=\"M780 310H665\"\/><path d=\"M485 330V398\"\/><path d=\"M535 400V335\"\/>\n<\/g>\n<text x=\"273\" y=\"237\" font-size=\"18\">HTTP<\/text><text x=\"675\" y=\"237\" font-size=\"18\">HTTPS<\/text>\n<text x=\"281\" y=\"354\" font-size=\"18\">\u5fdc\u7b54<\/text><text x=\"678\" y=\"354\" font-size=\"18\">\u51e6\u7406\u7d50\u679c<\/text>\n<text x=\"382\" y=\"375\" font-size=\"18\">\u4fdd\u5b58 \u2193<\/text><text x=\"551\" y=\"375\" font-size=\"18\">\u2191 \u691c\u7d22<\/text>\n<rect x=\"365\" y=\"400\" width=\"280\" height=\"85\" rx=\"10\" fill=\"#fff5ca\" stroke=\"#aa9140\" stroke-width=\"2\"\/>\n<text x=\"382\" y=\"428\" font-size=\"21\" font-weight=\"700\">\u57cb\u3081\u8fbc\u307fPostgreSQL<\/text>\n<text x=\"382\" y=\"464\" font-size=\"19\">\u30d0\u30f3\u30af\u30fb\u8a18\u61b6\u30fb\u691c\u7d22\u30c7\u30fc\u30bf<\/text>\n<path d=\"M505 485V528\" fill=\"none\" stroke=\"#aa9140\" stroke-width=\"3\"\/>\n<rect x=\"325\" y=\"530\" width=\"375\" height=\"60\" rx=\"9\" fill=\"#fff\" stroke=\"#aa9140\" stroke-width=\"2\"\/>\n<text x=\"342\" y=\"554\" font-size=\"18\">Docker\u306e\u5c02\u7528\u30dc\u30ea\u30e5\u30fc\u30e0<\/text>\n<text x=\"342\" y=\"580\" font-size=\"20\" font-weight=\"700\">hindsight-demo-data<\/text>\n<text x=\"35\" y=\"428\" font-size=\"20\" font-weight=\"700\">\u30d6\u30e9\u30a6\u30b6\u30fc\u3067\u898b\u308b\u3068\u304d<\/text>\n<text x=\"35\" y=\"460\" font-size=\"19\">localhost:9999<\/text>\n<text x=\"35\" y=\"490\" font-size=\"18\">Docker\u5185\u306e\u7ba1\u7406\u753b\u9762\u3078\u63a5\u7d9a<\/text>\n<text x=\"35\" y=\"565\" font-size=\"18\">\u30b3\u30f3\u30c6\u30ca\u505c\u6b62\u5f8c\u3082\u8a18\u61b6\u3092\u4fdd\u6301 \u2192<\/text>\n<text x=\"780\" y=\"395\" font-size=\"20\" font-weight=\"700\">PC\u306e\u5916\u3078\u9001\u4fe1<\/text>\n<text x=\"780\" y=\"427\" font-size=\"18\">\u5165\u529b\u306e\u51e6\u7406\u306b<\/text><text x=\"780\" y=\"454\" font-size=\"18\">\u5916\u90e8API\u3092\u5229\u7528<\/text>\n<text x=\"780\" y=\"487\" font-size=\"18\">API\u5229\u7528\u6599\u304c\u767a\u751f\u3057\u5f97\u308b<\/text>\n\n<\/svg><\/div><figcaption>\u3053\u306e\u8a18\u4e8b\u306eDocker\u69cb\u6210\u3092\u5358\u7d14\u5316\u3057\u305f\u5168\u4f53\u56f3\u3002\u9752\u3044\u5927\u67a0\u304c\u81ea\u5206\u306ePC\u3001\u70b9\u7dda\u306e\u67a0\u304cDocker\u30b3\u30f3\u30c6\u30ca\u3084\u3067\u3002\u53f3\u5074\u306eOpenAI API\u3068\u306e\u901a\u4fe1\u3060\u3051\u304c\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u7d4c\u7531\u306b\u306a\u308b\u3067\u3002\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u3067\u306f\u56f3\u3092\u6a2a\u306b\u30b9\u30af\u30ed\u30fc\u30eb\u3067\u304d\u308b\u3067\u3002<\/figcaption><\/figure>\n<table style=\"width:100%;border-collapse:collapse\"><thead><tr><th>\u767b\u5834\u3059\u308b\u3082\u306e<\/th><th>\u3053\u306e\u8a18\u4e8b\u3067\u306e\u5f79\u5272\u3068\u63a5\u7d9a\u5148<\/th><\/tr><\/thead><tbody><tr><td>PowerShell\uff08\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\uff09<\/td><td><code>Invoke-RestMethod<\/code>\u3067\u30e1\u30e2\u3084\u8cea\u554f\u3092<code>localhost:8888<\/code>\u3078\u9001\u308b\u3093\u3084\u3002Hindsight\u306e\u5916\u306b\u3042\u308b\u64cd\u4f5c\u5f79\u3084\u3067\u3002<\/td><\/tr><tr><td>Docker\u5185\u306eHindsight<\/td><td>\u4fdd\u5b58\u30fb\u691c\u7d22\u306e\u8981\u6c42\u3092\u53d7\u3051\u53d6\u308a\u3001\u5fc5\u8981\u306aLLM\u51e6\u7406\u3092OpenAI\u3078\u4f9d\u983c\u3057\u3001DB\u3092\u8aad\u307f\u66f8\u304d\u3059\u308b\u3093\u3084\u3002OpenAI\u306eAPI\u30ad\u30fc\u3092\u4f7f\u3046\u306e\u306f\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3084\u3067\u3002\u8d77\u52d5\u6642\u306bPowerShell\u304b\u3089\u74b0\u5883\u5909\u6570\u3067\u6e21\u3057\u305f\u3093\u3084\u3002<\/td><\/tr><tr><td>OpenAI API\uff08\u5916\u90e8LLM\uff09<\/td><td>\u305f\u3068\u3048\u3070\u4fdd\u5b58\u6642\u306b\u30e1\u30e2\u304b\u3089\u4e8b\u5b9f\u3092\u62bd\u51fa\u3059\u308b\u51e6\u7406\u3092\u53d7\u3051\u6301\u3064\u3093\u3084\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u76f4\u63a5OpenAI\u3078\u30e1\u30e2\u3092\u767b\u9332\u3059\u308b\u69cb\u6210\u3084\u306a\u304f\u3066\u3001Hindsight\u304c\u547c\u3073\u51fa\u3059\u3093\u3084\u3002<\/td><\/tr><tr><td>DB\u3068\u5c02\u7528\u30dc\u30ea\u30e5\u30fc\u30e0<\/td><td>\u8a18\u61b6\u306fHindsight\u5074\u306ePostgreSQL\u3067\u7ba1\u7406\u3057\u3001\u30c7\u30fc\u30bf\u3092<code>hindsight-demo-data<\/code>\u3078\u6b8b\u3057\u3066\u304a\u304f\u3093\u3084\u3002\u30b3\u30f3\u30c6\u30ca\u3092\u505c\u6b62\u3057\u3066\u3082\u3001\u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u524a\u9664\u3057\u306a\u3051\u308c\u3070\u30c7\u30fc\u30bf\u306f\u6b8b\u308b\u3067\u3002\u5916\u90e8API\u5074\u306e\u4fdd\u6301\u6761\u4ef6\u306f\u5225\u306b\u78ba\u8a8d\u304c\u5fc5\u8981\u3084\u3067\u3002<\/td><\/tr><tr><td>\u30d6\u30e9\u30a6\u30b6\u30fc\uff08\u7ba1\u7406\u753b\u9762\uff09<\/td><td><code>localhost:9999<\/code>\u306fDocker\u5185\u306e\u7ba1\u7406\u753b\u9762\u3092\u898b\u308b\u5165\u53e3\u3084\u3067\u3002\u4eca\u56de\u306e\u4fdd\u5b58\u30fb\u691c\u7d22\u30b3\u30de\u30f3\u30c9\u306e\u5b9b\u5148\u306f8888\u3084\u3067\u3002<\/td><\/tr><\/tbody><\/table>\n<h3>\u30e1\u30e2\u4fdd\u5b58\u306e\u4ed5\u7d44\u307f<\/h3>\n<ol><li>PowerShell\u304c\u300c\u30b5\u30f3\u30d7\u30eb\u793e\u306e\u62c5\u5f53\u8005\u306fA\u3055\u3093\u300d\u3068\u3044\u3046\u30e1\u30e2\u3092\u3001Hindsight\u3078HTTP\u3067\u9001\u308b\u3093\u3084\uff08<code>POST ...\/memories<\/code>\uff09\u3002<\/li><li>Hindsight\u304c\u8a2d\u5b9a\u6e08\u307f\u306eOpenAI API\u3092\u547c\u3073\u3001\u30e1\u30e2\u304b\u3089\u4e8b\u5b9f\u3092\u62bd\u51fa\u3059\u308b\u51e6\u7406\u306a\u3069\u3092\u884c\u3046\u3067\u3002\u30e1\u30e2\u306e\u5185\u5bb9\u304cPC\u306e\u5916\u3078\u9001\u3089\u308c\u308b\u6bb5\u968e\u3084\u3067\u3002<\/li><li>Hindsight\u304c\u62bd\u51fa\u7d50\u679c\u3092\u53d7\u3051\u53d6\u308a\u3001\u691c\u7d22\u7528\u30c7\u30fc\u30bf\u7b49\u3068\u3068\u3082\u306bDB\u3078\u4fdd\u5b58\u3059\u308b\u3093\u3084\u3002\u3053\u306efull\u30a4\u30e1\u30fc\u30b8\u3067\u306f\u57cb\u3081\u8fbc\u307f\u30fb\u518d\u30e9\u30f3\u30ad\u30f3\u30b0\u7528\u306e\u30e2\u30c7\u30eb\u306f\u30ed\u30fc\u30ab\u30eb\u306b\u542b\u307e\u308c\u3066\u308b\u3067\u3002<\/li><li>\u540c\u671f\u4fdd\u5b58\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001Hindsight\u304cPowerShell\u306b\u4fdd\u5b58\u7d50\u679c\u3092\u8fd4\u3059\u3093\u3084\u3002\u8a18\u4e8b\u306e<code>$saved.success<\/code>\u306f\u3053\u306e\u5fdc\u7b54\u3084\u3067\u3002<\/li><\/ol>\n<details id=\"hs-save\" class=\"hs-explainer\"><summary>\u25b6 \u4fdd\u5b58\u306e\u6d41\u308c\u3092\u518d\u751f\uff1a\u30e1\u30e2 \u2192 \u4e8b\u5b9f \u2192 \u4fdd\u5b58\u5b8c\u4e86<\/summary><input type=\"checkbox\" id=\"hs-save-pause\"><label for=\"hs-save-pause\">\u4e00\u6642\u505c\u6b62<\/label><div class=\"hs-diagram-wrap\"><svg viewBox=\"0 0 1000 630\" role=\"img\" aria-label=\"\u81ea\u5206\u306eWindows PC\u5185\u306ePowerShell\u304b\u3089Docker\u5185\u306eHindsight\u3078\u63a5\u7d9a\u3057\u3001Hindsight\u304c\u5916\u90e8\u306eOpenAI API\u3092\u547c\u3073\u51fa\u3059\u69cb\u6210\u3002\u8a18\u61b6\u306fPC\u5185\u306eDocker\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u6b8b\u308b\u3002\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs><marker id=\"hs-save-arrow\" markerWidth=\"9\" markerHeight=\"9\" refX=\"8\" refY=\"4\" orient=\"auto-start-reverse\"><path d=\"M0 0L8 4L0 8Z\" fill=\"#277a83\"\/><\/marker><\/defs>\n<rect x=\"10\" y=\"30\" width=\"720\" height=\"580\" rx=\"18\" fill=\"#edf5fc\" stroke=\"#6c98bf\" stroke-width=\"2\"\/>\n<text x=\"30\" y=\"66\" font-size=\"25\" font-weight=\"700\">\u81ea\u5206\u306eWindows PC<\/text>\n<rect x=\"310\" y=\"95\" width=\"390\" height=\"420\" rx=\"14\" fill=\"#fff\" stroke=\"#3775a3\" stroke-width=\"2\" stroke-dasharray=\"8 5\"\/>\n<text x=\"330\" y=\"126\" font-size=\"22\" font-weight=\"700\">Docker\uff1ahindsight-demo<\/text>\n<rect x=\"35\" y=\"155\" width=\"225\" height=\"175\" rx=\"12\" fill=\"#173b52\"\/>\n<text x=\"52\" y=\"188\" font-size=\"24\" fill=\"#fff\" font-weight=\"700\">PowerShell<\/text>\n<text x=\"52\" y=\"218\" font-size=\"19\" fill=\"#fff\">\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\uff08\u64cd\u4f5c\u5f79\uff09<\/text>\n<text x=\"52\" y=\"258\" font-size=\"19\" fill=\"#fff\">\u30e1\u30e2\u3092\u9001\u308b\uff0f\u8cea\u554f\u3059\u308b<\/text>\n<text x=\"52\" y=\"305\" font-size=\"18\" fill=\"#bfe5f1\">Invoke-RestMethod<\/text>\n<rect x=\"345\" y=\"155\" width=\"315\" height=\"175\" rx=\"12\" fill=\"#e3f5f0\" stroke=\"#277a83\" stroke-width=\"2\"\/>\n<text x=\"363\" y=\"188\" font-size=\"25\" font-weight=\"700\">Hindsight API<\/text>\n<text x=\"363\" y=\"218\" font-size=\"19\">localhost:8888\u3067\u53d7\u3051\u4ed8\u3051\u308b<\/text>\n<text x=\"363\" y=\"258\" font-size=\"19\">\u4fdd\u5b58\u30fb\u691c\u7d22\u3092\u53d6\u308a\u307e\u3068\u3081\u308b<\/text>\n<text x=\"363\" y=\"305\" font-size=\"18\">\u3053\u3053\u304cOpenAI\u306e\u30ad\u30fc\u3092\u4f7f\u3046<\/text>\n<rect x=\"780\" y=\"155\" width=\"210\" height=\"175\" rx=\"18\" fill=\"#fff0df\" stroke=\"#bc733b\" stroke-width=\"2\"\/>\n<text x=\"797\" y=\"188\" font-size=\"24\" font-weight=\"700\">OpenAI API<\/text>\n<text x=\"797\" y=\"218\" font-size=\"19\">\u5916\u90e8\u30b5\u30fc\u30d3\u30b9<\/text>\n<text x=\"797\" y=\"258\" font-size=\"19\">LLM\u3067\u60c5\u5831\u3092\u51e6\u7406<\/text>\n<text x=\"797\" y=\"305\" font-size=\"18\">\u4f8b\uff1agpt-4o-mini<\/text>\n<g fill=\"none\" stroke=\"#277a83\" stroke-width=\"3\" marker-end=\"url(#hs-save-arrow)\">\n<path d=\"M260 250H340\"\/><path d=\"M345 310H265\"\/><path d=\"M660 250H775\"\/><path d=\"M780 310H665\"\/><path d=\"M485 330V398\"\/><path d=\"M535 400V335\"\/>\n<\/g>\n<text x=\"273\" y=\"237\" font-size=\"18\">HTTP<\/text><text x=\"675\" y=\"237\" font-size=\"18\">HTTPS<\/text>\n<text x=\"281\" y=\"354\" font-size=\"18\">\u5fdc\u7b54<\/text><text x=\"678\" y=\"354\" font-size=\"18\">\u51e6\u7406\u7d50\u679c<\/text>\n<text x=\"382\" y=\"375\" font-size=\"18\">\u4fdd\u5b58 \u2193<\/text><text x=\"551\" y=\"375\" font-size=\"18\">\u2191 \u691c\u7d22<\/text>\n<rect x=\"365\" y=\"400\" width=\"280\" height=\"85\" rx=\"10\" fill=\"#fff5ca\" stroke=\"#aa9140\" stroke-width=\"2\"\/>\n<text x=\"382\" y=\"428\" font-size=\"21\" font-weight=\"700\">\u57cb\u3081\u8fbc\u307fPostgreSQL<\/text>\n<text x=\"382\" y=\"464\" font-size=\"19\">\u30d0\u30f3\u30af\u30fb\u8a18\u61b6\u30fb\u691c\u7d22\u30c7\u30fc\u30bf<\/text>\n<path d=\"M505 485V528\" fill=\"none\" stroke=\"#aa9140\" stroke-width=\"3\"\/>\n<rect x=\"325\" y=\"530\" width=\"375\" height=\"60\" rx=\"9\" fill=\"#fff\" stroke=\"#aa9140\" stroke-width=\"2\"\/>\n<text x=\"342\" y=\"554\" font-size=\"18\">Docker\u306e\u5c02\u7528\u30dc\u30ea\u30e5\u30fc\u30e0<\/text>\n<text x=\"342\" y=\"580\" font-size=\"20\" font-weight=\"700\">hindsight-demo-data<\/text>\n<text x=\"35\" y=\"428\" font-size=\"20\" font-weight=\"700\">\u30d6\u30e9\u30a6\u30b6\u30fc\u3067\u898b\u308b\u3068\u304d<\/text>\n<text x=\"35\" y=\"460\" font-size=\"19\">localhost:9999<\/text>\n<text x=\"35\" y=\"490\" font-size=\"18\">Docker\u5185\u306e\u7ba1\u7406\u753b\u9762\u3078\u63a5\u7d9a<\/text>\n<text x=\"35\" y=\"565\" font-size=\"18\">\u30b3\u30f3\u30c6\u30ca\u505c\u6b62\u5f8c\u3082\u8a18\u61b6\u3092\u4fdd\u6301 \u2192<\/text>\n<text x=\"780\" y=\"395\" font-size=\"20\" font-weight=\"700\">PC\u306e\u5916\u3078\u9001\u4fe1<\/text>\n<text x=\"780\" y=\"427\" font-size=\"18\">\u5165\u529b\u306e\u51e6\u7406\u306b<\/text><text x=\"780\" y=\"454\" font-size=\"18\">\u5916\u90e8API\u3092\u5229\u7528<\/text>\n<text x=\"780\" y=\"487\" font-size=\"18\">API\u5229\u7528\u6599\u304c\u767a\u751f\u3057\u5f97\u308b<\/text>\n<g class=\"moving memo\"><rect x=\"55\" y=\"236\" width=\"180\" height=\"52\" rx=\"8\" fill=\"#fff\" stroke=\"#247ca7\" stroke-width=\"2\"\/><text x=\"69\" y=\"268\" font-size=\"20\">\u30e1\u30e2\uff1a\u62c5\u5f53\u306fA\u3055\u3093<\/text><\/g>\n<g class=\"moving fact\"><rect x=\"795\" y=\"236\" width=\"180\" height=\"52\" rx=\"8\" fill=\"#fff5ca\" stroke=\"#aa9140\" stroke-width=\"2\"\/><text x=\"809\" y=\"268\" font-size=\"20\">\u4e8b\u5b9f\uff1a\u62c5\u5f53 = A\u3055\u3093<\/text><\/g>\n<g class=\"moving stored\"><rect x=\"373\" y=\"437\" width=\"265\" height=\"40\" rx=\"7\" fill=\"#fff5ca\"\/><text x=\"387\" y=\"464\" font-size=\"21\" font-weight=\"700\">\u4fdd\u5b58\u6e08\u307f\uff1a\u62c5\u5f53 = A\u3055\u3093<\/text><\/g>\n<g class=\"moving ack\"><rect x=\"51\" y=\"236\" width=\"195\" height=\"52\" rx=\"8\" fill=\"#fff\" stroke=\"#247ca7\" stroke-width=\"2\"\/><text x=\"65\" y=\"268\" font-size=\"21\">\u4fdd\u5b58\u5b8c\u4e86\uff1aTrue<\/text><\/g>\n<\/svg><\/div><p>\u767d\u3044\u30e1\u30e2\u304cPowerShell\u304b\u3089Hindsight\u3001OpenAI\u3078\u5c4a\u3044\u3066\u3001\u9ec4\u8272\u3044\u300c\u4e8b\u5b9f\u300d\u306b\u5909\u308f\u3063\u3066DB\u3078\u6b8b\u308b\u3067\u3002\u6700\u5f8c\u306b\u4fdd\u5b58\u5b8c\u4e86\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3078\u623b\u308b\u3093\u3084\u3002\u51e6\u7406\u306e\u4e00\u90e8\u3092\u5358\u7d14\u5316\u3057\u305f\u6982\u5ff5\u8aac\u660e\u3067\u3001\u5b9f\u969b\u306e\u901a\u4fe1\u30d1\u30b1\u30c3\u30c8\u30fb\u5b9f\u884c\u7d50\u679c\u30fb\u901f\u5ea6\u3092\u518d\u73fe\u3057\u305f\u6620\u50cf\u3084\u306a\u3044\u3067\u3002<\/p><\/details>\n<h3>\u8a18\u61b6\u691c\u7d22\u306e\u4ed5\u7d44\u307f<\/h3>\n<ol><li>PowerShell\u304c\u300c\u30b5\u30f3\u30d7\u30eb\u793e\u306e\u62c5\u5f53\u8005\u306f\u8ab0\u3067\u3059\u304b\u300d\u3068\u3044\u3046\u8cea\u554f\u3092Hindsight\u3078\u9001\u308b\u3093\u3084\uff08<code>POST ...\/memories\/recall<\/code>\uff09\u3002<\/li><li>Hindsight\u304cDB\u5185\u306e\u8a18\u61b6\u3092\u691c\u7d22\u3057\u3001\u5019\u88dc\u3092\u7d71\u5408\u30fb\u4e26\u3079\u66ff\u3048\u308b\u3093\u3084\u3002\u56f3\u3067\u306f\u3001\u8cea\u554f\u304b\u3089\u4fdd\u5b58\u6e08\u307f\u306e\u300c\u62c5\u5f53 = A\u3055\u3093\u300d\u306b\u305f\u3069\u308b\u4e3b\u306a\u7d4c\u8def\u3092\u793a\u3057\u3066\u308b\u3067\u3002\u8cea\u554f\u306e\u89e3\u6790\u306a\u3069\u306bLLM\u3092\u5229\u7528\u3059\u308b\u7bc4\u56f2\u306f\u8a2d\u5b9a\u3084\u51e6\u7406\u5185\u5bb9\u3067\u5909\u308f\u308b\u3067\u3002<\/li><li>Hindsight\u304c\u5019\u88dc\u306e\u4e00\u89a7\u3092PowerShell\u3078\u8fd4\u3059\u3093\u3084\u3002\u8a18\u4e8b\u306e<code>$found.results<\/code>\u306f\u3053\u306e\u4e00\u89a7\u3084\u3067\u3002\u3053\u3053\u3067\u306fOpenAI\u306b\u6700\u7d42\u56de\u7b54\u306e\u6587\u7ae0\u3092\u4f5c\u3089\u305b\u308b<code>reflect<\/code>\u307e\u3067\u306f\u547c\u3070\u3078\u3093\u3067\u3002<\/li><\/ol>\n<details id=\"hs-recall\" class=\"hs-explainer\"><summary>\u25b6 \u691c\u7d22\u306e\u6d41\u308c\u3092\u518d\u751f\uff1a\u8cea\u554f \u2192 DB\u306e\u8a18\u61b6 \u2192 \u691c\u7d22\u5019\u88dc<\/summary><input type=\"checkbox\" id=\"hs-recall-pause\"><label for=\"hs-recall-pause\">\u4e00\u6642\u505c\u6b62<\/label><div class=\"hs-diagram-wrap\"><svg viewBox=\"0 0 1000 630\" role=\"img\" aria-label=\"\u81ea\u5206\u306eWindows PC\u5185\u306ePowerShell\u304b\u3089Docker\u5185\u306eHindsight\u3078\u63a5\u7d9a\u3057\u3001Hindsight\u304c\u5916\u90e8\u306eOpenAI API\u3092\u547c\u3073\u51fa\u3059\u69cb\u6210\u3002\u8a18\u61b6\u306fPC\u5185\u306eDocker\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u6b8b\u308b\u3002\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs><marker id=\"hs-recall-arrow\" markerWidth=\"9\" markerHeight=\"9\" refX=\"8\" refY=\"4\" orient=\"auto-start-reverse\"><path d=\"M0 0L8 4L0 8Z\" fill=\"#277a83\"\/><\/marker><\/defs>\n<rect x=\"10\" y=\"30\" width=\"720\" height=\"580\" rx=\"18\" fill=\"#edf5fc\" stroke=\"#6c98bf\" stroke-width=\"2\"\/>\n<text x=\"30\" y=\"66\" font-size=\"25\" font-weight=\"700\">\u81ea\u5206\u306eWindows PC<\/text>\n<rect x=\"310\" y=\"95\" width=\"390\" height=\"420\" rx=\"14\" fill=\"#fff\" stroke=\"#3775a3\" stroke-width=\"2\" stroke-dasharray=\"8 5\"\/>\n<text x=\"330\" y=\"126\" font-size=\"22\" font-weight=\"700\">Docker\uff1ahindsight-demo<\/text>\n<rect x=\"35\" y=\"155\" width=\"225\" height=\"175\" rx=\"12\" fill=\"#173b52\"\/>\n<text x=\"52\" y=\"188\" font-size=\"24\" fill=\"#fff\" font-weight=\"700\">PowerShell<\/text>\n<text x=\"52\" y=\"218\" font-size=\"19\" fill=\"#fff\">\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\uff08\u64cd\u4f5c\u5f79\uff09<\/text>\n<text x=\"52\" y=\"258\" font-size=\"19\" fill=\"#fff\">\u30e1\u30e2\u3092\u9001\u308b\uff0f\u8cea\u554f\u3059\u308b<\/text>\n<text x=\"52\" y=\"305\" font-size=\"18\" fill=\"#bfe5f1\">Invoke-RestMethod<\/text>\n<rect x=\"345\" y=\"155\" width=\"315\" height=\"175\" rx=\"12\" fill=\"#e3f5f0\" stroke=\"#277a83\" stroke-width=\"2\"\/>\n<text x=\"363\" y=\"188\" font-size=\"25\" font-weight=\"700\">Hindsight API<\/text>\n<text x=\"363\" y=\"218\" font-size=\"19\">localhost:8888\u3067\u53d7\u3051\u4ed8\u3051\u308b<\/text>\n<text x=\"363\" y=\"258\" font-size=\"19\">\u4fdd\u5b58\u30fb\u691c\u7d22\u3092\u53d6\u308a\u307e\u3068\u3081\u308b<\/text>\n<text x=\"363\" y=\"305\" font-size=\"18\">\u3053\u3053\u304cOpenAI\u306e\u30ad\u30fc\u3092\u4f7f\u3046<\/text>\n<rect x=\"780\" y=\"155\" width=\"210\" height=\"175\" rx=\"18\" fill=\"#fff0df\" stroke=\"#bc733b\" stroke-width=\"2\"\/>\n<text x=\"797\" y=\"188\" font-size=\"24\" font-weight=\"700\">OpenAI API<\/text>\n<text x=\"797\" y=\"218\" font-size=\"19\">\u5916\u90e8\u30b5\u30fc\u30d3\u30b9<\/text>\n<text x=\"797\" y=\"258\" font-size=\"19\">LLM\u3067\u60c5\u5831\u3092\u51e6\u7406<\/text>\n<text x=\"797\" y=\"305\" font-size=\"18\">\u4f8b\uff1agpt-4o-mini<\/text>\n<g fill=\"none\" stroke=\"#277a83\" stroke-width=\"3\" marker-end=\"url(#hs-recall-arrow)\">\n<path d=\"M260 250H340\"\/><path d=\"M345 310H265\"\/><path d=\"M660 250H775\"\/><path d=\"M780 310H665\"\/><path d=\"M485 330V398\"\/><path d=\"M535 400V335\"\/>\n<\/g>\n<text x=\"273\" y=\"237\" font-size=\"18\">HTTP<\/text><text x=\"675\" y=\"237\" font-size=\"18\">HTTPS<\/text>\n<text x=\"281\" y=\"354\" font-size=\"18\">\u5fdc\u7b54<\/text><text x=\"678\" y=\"354\" font-size=\"18\">\u51e6\u7406\u7d50\u679c<\/text>\n<text x=\"382\" y=\"375\" font-size=\"18\">\u4fdd\u5b58 \u2193<\/text><text x=\"551\" y=\"375\" font-size=\"18\">\u2191 \u691c\u7d22<\/text>\n<rect x=\"365\" y=\"400\" width=\"280\" height=\"85\" rx=\"10\" fill=\"#fff5ca\" stroke=\"#aa9140\" stroke-width=\"2\"\/>\n<text x=\"382\" y=\"428\" font-size=\"21\" font-weight=\"700\">\u57cb\u3081\u8fbc\u307fPostgreSQL<\/text>\n<text x=\"382\" y=\"464\" font-size=\"19\">\u30d0\u30f3\u30af\u30fb\u8a18\u61b6\u30fb\u691c\u7d22\u30c7\u30fc\u30bf<\/text>\n<path d=\"M505 485V528\" fill=\"none\" stroke=\"#aa9140\" stroke-width=\"3\"\/>\n<rect x=\"325\" y=\"530\" width=\"375\" height=\"60\" rx=\"9\" fill=\"#fff\" stroke=\"#aa9140\" stroke-width=\"2\"\/>\n<text x=\"342\" y=\"554\" font-size=\"18\">Docker\u306e\u5c02\u7528\u30dc\u30ea\u30e5\u30fc\u30e0<\/text>\n<text x=\"342\" y=\"580\" font-size=\"20\" font-weight=\"700\">hindsight-demo-data<\/text>\n<text x=\"35\" y=\"428\" font-size=\"20\" font-weight=\"700\">\u30d6\u30e9\u30a6\u30b6\u30fc\u3067\u898b\u308b\u3068\u304d<\/text>\n<text x=\"35\" y=\"460\" font-size=\"19\">localhost:9999<\/text>\n<text x=\"35\" y=\"490\" font-size=\"18\">Docker\u5185\u306e\u7ba1\u7406\u753b\u9762\u3078\u63a5\u7d9a<\/text>\n<text x=\"35\" y=\"565\" font-size=\"18\">\u30b3\u30f3\u30c6\u30ca\u505c\u6b62\u5f8c\u3082\u8a18\u61b6\u3092\u4fdd\u6301 \u2192<\/text>\n<text x=\"780\" y=\"395\" font-size=\"20\" font-weight=\"700\">PC\u306e\u5916\u3078\u9001\u4fe1<\/text>\n<text x=\"780\" y=\"427\" font-size=\"18\">\u5165\u529b\u306e\u51e6\u7406\u306b<\/text><text x=\"780\" y=\"454\" font-size=\"18\">\u5916\u90e8API\u3092\u5229\u7528<\/text>\n<text x=\"780\" y=\"487\" font-size=\"18\">API\u5229\u7528\u6599\u304c\u767a\u751f\u3057\u5f97\u308b<\/text>\n<g class=\"moving query\"><rect x=\"55\" y=\"236\" width=\"180\" height=\"52\" rx=\"8\" fill=\"#fff\" stroke=\"#247ca7\" stroke-width=\"2\"\/><text x=\"70\" y=\"268\" font-size=\"21\">\u8cea\u554f\uff1a\u62c5\u5f53\u306f\u8ab0\uff1f<\/text><\/g>\n<g><rect x=\"373\" y=\"437\" width=\"265\" height=\"40\" rx=\"7\" fill=\"#fff5ca\"\/><text x=\"387\" y=\"464\" font-size=\"21\" font-weight=\"700\">\u4fdd\u5b58\u6e08\u307f\uff1a\u62c5\u5f53 = A\u3055\u3093<\/text><\/g>\n<g class=\"moving found\"><rect x=\"385\" y=\"437\" width=\"180\" height=\"40\" rx=\"7\" fill=\"#fff\" stroke=\"#247ca7\" stroke-width=\"2\"\/><text x=\"399\" y=\"464\" font-size=\"20\">\u5019\u88dc\uff1a\u62c5\u5f53 = A\u3055\u3093<\/text><\/g>\n<g class=\"moving result\"><rect x=\"51\" y=\"236\" width=\"195\" height=\"52\" rx=\"8\" fill=\"#fff\" stroke=\"#247ca7\" stroke-width=\"2\"\/><text x=\"65\" y=\"268\" font-size=\"20\">\u5019\u88dc\uff1a\u62c5\u5f53 = A\u3055\u3093<\/text><\/g>\n<rect x=\"772\" y=\"365\" width=\"220\" height=\"124\" rx=\"10\" fill=\"#fff7ed\"\/>\n<text x=\"785\" y=\"390\" font-size=\"18\">\u4e3b\u306a\u691c\u7d22\u7d4c\u8def\u3092\u8868\u793a\u3002<\/text><text x=\"785\" y=\"418\" font-size=\"18\">\u8cea\u554f\u306e\u89e3\u6790\u306a\u3069\u306e\u5916\u90e8<\/text><text x=\"785\" y=\"446\" font-size=\"18\">LLM\u5229\u7528\u306f\u3001\u8a2d\u5b9a\u3084\u51e6\u7406<\/text><text x=\"785\" y=\"474\" font-size=\"18\">\u5185\u5bb9\u306b\u3088\u308a\u7570\u306a\u308a\u307e\u3059\u3002<\/text>\n<\/svg><\/div><p>\u8cea\u554f\u30ab\u30fc\u30c9\u304cHindsight\u3092\u901a\u3063\u3066\u4fdd\u5b58\u6e08\u307f\u306e\u8a18\u61b6\u3078\u9032\u307f\u3001\u691c\u7d22\u5019\u88dc\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3078\u623b\u308b\u3093\u3084\u3002\u691c\u7d22\u51e6\u7406\u306e\u6982\u5ff5\u56f3\u3084\u3067\u3002\u3053\u306e\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3067\u306fOpenAI\u5074\u3092\u52d5\u304b\u3057\u3066\u3078\u3093\u3051\u3069\u3001\u300c\u691c\u7d22\u6642\u306f\u5916\u90e8\u901a\u4fe1\u304c\u4e00\u5207\u306a\u3044\u300d\u3068\u4fdd\u8a3c\u3059\u308b\u3082\u3093\u3084\u306a\u3044\u3067\u3002<\/p><\/details>\n<p><small>\u5168\u4f53\u56f3\u3068\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u306f\u3053\u306e\u8a18\u4e8b\u306e\u305f\u3081\u306b\u4f5c\u3063\u305f\u3082\u3093\u3084\u3067\u3002A\u3055\u3093\u306f\u67b6\u7a7a\u306e\u5165\u529b\u4f8b\u3067\u3001\u691c\u7d22\u7cbe\u5ea6\u3092\u793a\u3059\u3082\u306e\u3084\u306a\u3044\u3067\u3002\u5404\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u306f16\u79d2\u30671\u56de\u518d\u751f\u3057\u3066\u6b62\u307e\u308b\u3067\u3002\u4e00\u6642\u505c\u6b62\u3092\u89e3\u9664\u3057\u3066\u304b\u3089\u9589\u3058\u3066\u958b\u304f\u3068\u518d\u751f\u3092\u3084\u308a\u76f4\u305b\u308b\u3067\u3002OS\u3067\u52d5\u304d\u3092\u6e1b\u3089\u3059\u8a2d\u5b9a\u306b\u3057\u3066\u3044\u308b\u3068\u304d\u306f\u3001\u4fdd\u5b58\u30fb\u691c\u7d22\u5f8c\u306e\u72b6\u614b\u3092\u6b62\u307e\u3063\u305f\u72b6\u614b\u3067\u8868\u793a\u3059\u308b\u3067\u3002\u53c2\u8003\u306b\u3057\u305f\u8cc7\u6599\uff1a<a href=\"https:\/\/hindsight.vectorize.io\/developer\/installation\">\u516c\u5f0f\u306eDocker\u69cb\u6210<\/a>\u3001<a href=\"https:\/\/hindsight.vectorize.io\/developer\/api\/retain\">\u4fdd\u5b58API<\/a>\u3001<a href=\"https:\/\/hindsight.vectorize.io\/developer\/api\/recall\">\u691c\u7d22API<\/a>\u3001<a href=\"https:\/\/hindsight.vectorize.io\/developer\/retrieval\">\u691c\u7d22\u306e\u4ed5\u7d44\u307f<\/a>\u3002<\/small><\/p><h2>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h2>\n<table style=\"width:100%;border-collapse:collapse\"><thead><tr><th>\u75c7\u72b6<\/th><th>\u6700\u521d\u306b\u3059\u308b\u64cd\u4f5c<\/th><\/tr><\/thead><tbody>\n<tr><td>\u30b3\u30f3\u30c6\u30ca\u540d\u304c\u3059\u3067\u306b\u4f7f\u308f\u308c\u3066\u3044\u308b<\/td><td><code>docker ps -a --filter 'name=hindsight-demo'<\/code>\u3067\u78ba\u8a8d\u3057\u3066\u306a\u3002\u4ee5\u524d\u4f5c\u3063\u305f\u540c\u3058\u7df4\u7fd2\u7528\u30b3\u30f3\u30c6\u30ca\u306a\u3089<code>docker start hindsight-demo<\/code>\u3067\u518d\u958b\u3057\u3066\u306a\u3002\u65b0\u3057\u3044\u30ad\u30fc\u306f\u65e2\u5b58\u30b3\u30f3\u30c6\u30ca\u3078\u81ea\u52d5\u3067\u306f\u53cd\u6620\u3055\u308c\u3078\u3093\u3067\u3002<\/td><\/tr>\n<tr><td>port is already allocated<\/td><td>8888\u307e\u305f\u306f9999\u3092\u4f7f\u3046\u30a2\u30d7\u30ea\u3092\u78ba\u8a8d\u3057\u3066\u306a\u3002\u305f\u3068\u3048\u3070<code>Get-NetTCPConnection -LocalPort 8888,9999 -State Listen -ErrorAction SilentlyContinue<\/code>\u3002\u3059\u3067\u306b\u4f7f\u3063\u3066\u308b\u30a2\u30d7\u30ea\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u7d42\u4e86\u3057\u3066\u306a\u3002\u30dd\u30fc\u30c8\u3092\u5909\u66f4\u3059\u308b\u3068\u304d\u306f\u8d77\u52d5\u8a2d\u5b9a\u3068\u3053\u306e\u8a18\u4e8b\u306eURL\u3092\u5bfe\u5fdc\u3055\u305b\u3066\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3067\u3002<\/td><\/tr>\n<tr><td>200\u306b\u306a\u3089\u306a\u3044\uff0f\u4e00\u89a7\u306b\u30b3\u30f3\u30c6\u30ca\u304c\u306a\u3044<\/td><td><code>docker ps -a --filter 'name=hindsight-demo'<\/code>\u3068<code>docker logs --tail 80 hindsight-demo<\/code>\u3092\u5b9f\u884c\u3002\u307e\u3060\u8d77\u52d5\u4e2d\u306a\u3089\u5f85\u3063\u3066\u306a\u3002\u7d42\u4e86\u3057\u3066\u308b\u3068\u304d\u306f\u30ed\u30b0\u306e\u30a8\u30e9\u30fc\u3092\u78ba\u8a8d\u3057\u3066\u306a\u3002\u30e1\u30e2\u30ea\u4e0d\u8db3\u306a\u3089Docker Desktop\u306e\u30ea\u30bd\u30fc\u30b9\u8a2d\u5b9a\u3068PC\u306e\u7a7a\u304d\u30e1\u30e2\u30ea\u3082\u78ba\u8a8d\u3057\u3066\u306a\u3002<\/td><\/tr>\n<tr><td>\u4fdd\u5b58\u6642\u306b401\u30fb403\u30fb429\u306a\u3069\u304c\u51fa\u308b<\/td><td>Hindsight\u306e\u30ed\u30b0\u3067\u5916\u90e8API\u5074\u306e\u30a8\u30e9\u30fc\u304b\u78ba\u8a8d\u3057\u3066\u306a\u3002\u30ad\u30fc\u3001\u30e2\u30c7\u30eb\u5229\u7528\u6a29\u9650\u3001\u6b8b\u9ad8\u30fb\u5229\u7528\u4e0a\u9650\u3092OpenAI\u5074\u3067\u78ba\u8a8d\u3057\u3066\u306a\u3002429\u306e\u3068\u304d\u306f\u4e0a\u9650\u30fb\u30ec\u30fc\u30c8\u306e\u7406\u7531\u3092\u78ba\u8a8d\u3057\u3001\u7d9a\u3051\u3066\u4f55\u5ea6\u3082\u9001\u3089\u3093\u3068\u3044\u3066\u306a\u3002<\/td><\/tr>\n<tr><td>PowerShell\u3092\u9589\u3058\u3066\u5909\u6570\u304c\u306a\u304f\u306a\u3063\u305f<\/td><td>\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3057\u305f\u5f8c\u3001\u6b21\u7bc0\u306e\u300c\u65b0\u3057\u3044PowerShell\u3067\u518d\u958b\u3059\u308b2\u884c\u300d\u3092\u5b9f\u884c\u3057\u3001\u691c\u7d22\u30d6\u30ed\u30c3\u30af\u3078\u623b\u308b\u3093\u3084\u3002<\/td><\/tr>\n<tr><td>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u305f<\/td><td>\u30ed\u30b0\u3068\u30e1\u30e2\u4e00\u89a7\u3092\u78ba\u8a8d\u3057\u3001\u51e6\u7406\u304c\u7d42\u308f\u3063\u3066\u3044\u308b\u304b\u3092\u5148\u306b\u8abf\u3079\u3066\u306a\u3002\u4fdd\u5b58\u304c\u3046\u307e\u304f\u3044\u304b\u3093\u304b\u3089\u3068\u3001\u78ba\u8a8d\u305b\u305a\u306b\u4f55\u5ea6\u3082\u5b9f\u884c\u305b\u3093\u3068\u3044\u3066\u306a\u3002<\/td><\/tr>\n<\/tbody><\/table>\n<p>API\u30ad\u30fc\u3092\u76f4\u3059\u3068\u304d\u306f\u3001\u7df4\u7fd2\u7528\u30b3\u30f3\u30c6\u30ca\u3092<code>docker stop hindsight-demo<\/code>\u3001<code>docker rm hindsight-demo<\/code>\u306e\u9806\u3067\u505c\u6b62\u30fb\u524a\u9664\u3057\u3066\u304b\u3089\u3001\u624b\u98062\u306e\u5165\u529b\u3068\u624b\u98063\u306e\u8d77\u52d5\u3092\u3084\u308a\u76f4\u3057\u3066\u306a\u3002\u4fdd\u5b58\u7528\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u524a\u9664\u3057\u306a\u3051\u308c\u3070DB\u306f\u6b8b\u308b\u3067\u3002\u30ed\u30b0\u3092\u4eba\u306b\u898b\u305b\u308b\u3068\u304d\u306f\u30ad\u30fc\u3084\u5165\u529b\u5185\u5bb9\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u306a\u3002<\/p>\n<h2>\u505c\u6b62\u30fb\u518d\u958b\u3068\u30c7\u30fc\u30bf\u306e\u524a\u9664<\/h2>\n<p>\u4f5c\u696d\u3092\u7d42\u3048\u308b\u3068\u304d\u306f\u6b21\u306e1\u884c\u3092\u5b9f\u884c\u3057\u3066\u306a\u3002\u8a18\u61b6\u306e\u30c7\u30fc\u30bf\u306f\u6b8b\u308b\u3067\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>docker stop hindsight-demo<\/code><\/pre><p>\u6b21\u56de\u306fDocker Desktop\u3092\u8d77\u52d5\u3057\u3066\u304b\u3089\u3001\u6b21\u3092\u5b9f\u884c\u3057\u3066\u306a\u3002\u521d\u56de\u306e<code>docker run<\/code>\u3092\u6bce\u56de\u7e70\u308a\u8fd4\u3059\u5fc5\u8981\u306f\u306a\u3044\u3067\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>docker start hindsight-demo<\/code><\/pre><p>\u624b\u98063\u306eHTTP 200\u3092\u78ba\u8a8d\u3057\u3066\u306a\u3002\u65b0\u3057\u3044PowerShell\u3067\u518d\u958b\u3059\u308b\u3068\u304d\u306f\u3001\u6b21\u306e2\u884c\u3067\u63a5\u7d9a\u5148\u3092\u8a2d\u5b9a\u3057\u76f4\u3057\u3066\u304b\u3089\u624b\u98065\u306e\u691c\u7d22\u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3057\u3066\u306a\u3002\u4fdd\u5b58\u6e08\u307f\u30e1\u30e2\u3092\u63a2\u3059\u3060\u3051\u306a\u3089\u624b\u98064\u306e\u518d\u767b\u9332\u306f\u3044\u3089\u3078\u3093\u3067\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>$bank = &#39;first-memory-demo&#39;\n$base = &quot;http:\/\/localhost:8888\/v1\/default\/banks\/$bank&quot;<\/code><\/pre><p>\u3053\u308c\u3067\u3001PowerShell\u3092\u9589\u3058\u3066\u3082\u8a18\u61b6\u304cDocker\u5074\u306b\u6b8b\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u308b\u3067\u3002\u5916\u90e8LLM\u3078\u306e\u901a\u4fe1\u3084\u4fdd\u5b58\u671f\u9593\u3092\u7ba1\u7406\u3059\u308b\u672c\u756a\u904b\u7528\u306f\u5225\u306b\u8003\u3048\u3066\u304a\u3044\u3066\u306a\u3002<\/p>\n<details><summary>\u7df4\u7fd2\u30c7\u30fc\u30bf\u306e\u524a\u9664\uff08\u5143\u306b\u623b\u305b\u3078\u3093\u3067\uff09<\/summary><p>Hindsight\u304c\u8d77\u52d5\u4e2d\u306a\u3089\u3001\u6b21\u306e\u64cd\u4f5c\u3067<strong>first-memory-demo\u30d0\u30f3\u30af\u3068\u3001\u305d\u306e\u4e2d\u306e\u3059\u3079\u3066\u306e\u8a18\u61b6<\/strong>\u3092\u524a\u9664\u3067\u304d\u308b\u3067\u3002\u7df4\u7fd2\u30c7\u30fc\u30bf\u3060\u3051\u304c\u5165\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u5b9f\u884c\u3057\u3066\u306a\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>Invoke-RestMethod -Method Delete -Uri &#39;http:\/\/localhost:8888\/v1\/default\/banks\/first-memory-demo&#39;<\/code><\/pre><p>\u7df4\u7fd2\u7528\u30b3\u30f3\u30c6\u30ca\u3068\u5c02\u7528\u4fdd\u5b58\u9818\u57df\u3082\u3059\u3079\u3066\u4e0d\u8981\u306a\u3089\u3001\u6b21\u306e3\u884c\u3092\u9806\u756a\u306b\u5b9f\u884c\u3057\u3066\u306a\u3002<strong>\u6700\u5f8c\u306e\u884c\u3067hindsight-demo-data\u5185\u306e\u5168\u30c7\u30fc\u30bf\u304c\u6d88\u3048\u308b\u3067\u3002<\/strong>\u307b\u304b\u306e\u7528\u9014\u3067\u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f7f\u3063\u3066\u3044\u308b\u3068\u304d\u306f\u5b9f\u884c\u305b\u3093\u3068\u3044\u3066\u306a\u3002\u5916\u90e8API\u306e\u30ad\u30fc\u81ea\u4f53\u306f\u524a\u9664\u3055\u308c\u306a\u3044\u306e\u3067\u3001\u4e0d\u8981\u306b\u306a\u3063\u305f\u30ad\u30fc\u306f\u767a\u884c\u5143\u306eAPI keys\u753b\u9762\u3067\u3082\u4f7f\u3048\u3093\u3088\u3046\u306b\u3057\u3066\u304a\u3044\u3066\u306a\u3002<\/p><pre style=\"padding:18px;overflow-x:auto;background:#eef3f7;color:#173b52;white-space:pre\"><code>docker stop hindsight-demo\ndocker rm hindsight-demo\ndocker volume rm hindsight-demo-data<\/code><\/pre><\/details>\n<h2>\u30a2\u30b7\u30b9\u30bf\u30f3\u30c8\u306b\u7d44\u307f\u8fbc\u3080\u524d\u306b<\/h2>\n<table style=\"width:100%;border-collapse:collapse\"><caption>\u60f3\u5b9a\u3059\u308b\u4f5c\u696d\u306e\u5909\u5316\u3002\u5b9f\u6e2c\u306e\u6bd4\u8f03\u3084\u306a\u3044\u3067\u3002<\/caption><thead><tr><th>\u5168\u6587\u3092\u8cbc\u308a\u76f4\u3059\u5834\u5408<\/th><th>\u4eca\u56de\u8a66\u3057\u305f\u8a18\u61b6\u306e\u4f7f\u3044\u65b9<\/th><\/tr><\/thead><tbody><tr><td>\u8cea\u554f\u3059\u308b\u305f\u3073\u306b\u3001\u62c5\u5f53\u8005\u3068\u4f1a\u8b70\u5ba4\u306e\u30e1\u30e2\u3092\u63a2\u3057\u3066\u8cbc\u308b\u3002<\/td><td>\u4e00\u5ea6\u4fdd\u5b58\u3057\u305f\u30e1\u30e2\u304b\u3089\u3001\u8cea\u554f\u306b\u95a2\u4fc2\u3059\u308b\u60c5\u5831\u3092API\u3067\u53d6\u308a\u51fa\u3059\u3002<\/td><\/tr><\/tbody><\/table>\n<p>\u4eca\u56de\u306e\u30b4\u30fc\u30eb\u306f\u300c\u4fdd\u5b58\u3068\u691c\u7d22\u300d\u3084\u3067\u3002\u30c1\u30e3\u30c3\u30c8\u753b\u9762\u3084\u3001\u53d6\u5f97\u3057\u305f\u8a18\u61b6\u3092\u3082\u3068\u306b\u7b54\u3048\u308b\u30a2\u30d7\u30ea\u307e\u3067\u306f\u4f5c\u3063\u3066\u3078\u3093\u3067\u3002\u6b21\u306b\u7d44\u307f\u8fbc\u3080\u3068\u304d\u306f\u3001\u5229\u7528\u8005\u3054\u3068\u306e\u30c7\u30fc\u30bf\u5883\u754c\u3001\u8aa4\u3063\u305f\u8a18\u61b6\u306e\u66f4\u65b0\u30fb\u524a\u9664\u3001\u691c\u7d22\u7d50\u679c\u3068\u5143\u306e\u60c5\u5831\u3092\u6bd4\u3079\u308b\u65b9\u6cd5\u3092\u8003\u3048\u3066\u306a\u3002Memory Bank\u306e\u540d\u524d\u3092\u5206\u3051\u308b\u3053\u3068\u3060\u3051\u3067\u3001\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u304c\u5b8c\u6210\u3059\u308b\u308f\u3051\u3084\u306a\u3044\u3067\u3002<\/p>\n<h2>\u516c\u5f0f\u8cc7\u6599\u3068\u5229\u7528\u6761\u4ef6<\/h2>\n<p>Hindsight\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u672c\u4f53LICENSE\u306fMIT\u3084\u3067\u3002Docker Desktop\u3001\u540c\u68b1\u30e2\u30c7\u30eb\u3001\u5916\u90e8LLM\u3001\u30af\u30e9\u30a6\u30c9\u30b5\u30fc\u30d3\u30b9\u306e\u6761\u4ef6\u3084\u6599\u91d1\u306f\u305d\u308c\u305e\u308c\u5225\u3084\u3067\u3002\u3053\u306e\u8a18\u4e8b\u306e\u56f3\u89e3\u306f\u72ec\u81ea\u5236\u4f5c\u3067\u3001\u5b9f\u969b\u306e\u88fd\u54c1\u753b\u9762\u3084\u5b9f\u884c\u7d50\u679c\u3084\u306a\u3044\u3067\u3002<\/p>\n<ul><li><a href=\"https:\/\/github.com\/vectorize-io\/hindsight\">\u516c\u5f0fGitHub\u30fbREADME<\/a> \uff0f <a href=\"https:\/\/github.com\/vectorize-io\/hindsight\/blob\/main\/LICENSE\">\u672c\u4f53LICENSE<\/a><\/li><li><a href=\"https:\/\/hindsight.vectorize.io\/developer\/installation\">\u516c\u5f0f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/a> \uff0f <a href=\"https:\/\/hindsight.vectorize.io\/developer\/models\">\u30e2\u30c7\u30eb\u3068\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u8a2d\u5b9a<\/a><\/li><li><a href=\"https:\/\/hindsight.vectorize.io\/api-reference\">HTTP API\u4ed5\u69d8<\/a> \uff0f <a href=\"https:\/\/github.com\/vectorize-io\/hindsight\/blob\/main\/hindsight-docs\/static\/openapi.json\">\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306eOpenAPI\u4ed5\u69d8<\/a><\/li><li><a href=\"https:\/\/hindsight.vectorize.io\/developer\/api\/retain\">\u4fdd\u5b58\u64cd\u4f5c\u306e\u89e3\u8aac<\/a> \uff0f <a href=\"https:\/\/hindsight.vectorize.io\/developer\/api\/recall\">\u691c\u7d22\u64cd\u4f5c\u306e\u89e3\u8aac<\/a><\/li><li><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\">Microsoft\uff1aWSL\u306e\u5c0e\u5165<\/a> \uff0f <a href=\"https:\/\/docs.docker.com\/desktop\/setup\/install\/windows-install\/\">Docker Desktop\uff1aWindows\u306e\u5c0e\u5165<\/a><\/li><li><a href=\"https:\/\/developers.openai.com\/api\/docs\/quickstart\">OpenAI API\uff1a\u30ad\u30fc\u306e\u6e96\u5099<\/a> \uff0f <a href=\"https:\/\/developers.openai.com\/api\/docs\/pricing\">\u6599\u91d1<\/a><\/li><\/ul>\n<p><small>\u624b\u9806\u3092\u76f4\u3057\u3066\u8cc7\u6599\u3092\u78ba\u8a8d\u3057\u305f\u65e5\uff1a2026\u5e7410\u670824\u65e5\u3002\u63b2\u8f09\u5bfe\u8c61\u306fHysen Labs\u306e<a href=\"https:\/\/hysenlabs.com\/data\/star-growth-30d.csv\">30\u65e5\u9593\u30b9\u30bf\u30fc\u7d14\u5897CSV<\/a>\uff082026\u5e749\u670823\u65e5\u301c10\u670823\u65e5\uff09\u306e\u4e0a\u4f4d20\u4ef6\u304b\u3089\u3059\u3067\u306b\u8a18\u4e8b\u306b\u3057\u305f\u3082\u306e\u3092\u9664\u3044\u3066\u9078\u3093\u3060\u3067\u3002Hysen Labs\u304c\u8ffd\u8de1\u3059\u308b\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u9806\u4f4d\u3067\u3001GitHub\u5168\u4f53\u3092\u7db2\u7f85\u3059\u308b\u30e9\u30f3\u30ad\u30f3\u30b0\u3084\u306a\u3044\u3067\u3002\u671f\u9593\u672b\u3068\u671f\u9593\u521d\u306e\u30b9\u30bf\u30fc\u6570\u306e\u5dee\u5206\u3092\u4f7f\u7528\u3002\u30c7\u30fc\u30bf\u63d0\u4f9b\uff1a<a href=\"https:\/\/hysenlabs.com\/data\/star-growth\">Hysen Labs<\/a>\uff08CC BY 4.0\uff09\u3002<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AI\u30a2\u30b7\u30b9\u30bf\u30f3\u30c8\u306b\u300c\u305d\u306e\u62c5\u5f53\u8005\u3001\u524d\u306b\u3082\u8a00\u3046\u305f\u3084\u3093\u300d\u3068\u601d\u3046\u3053\u3068\u3001\u306a\u3044\u3084\u308d\u304b\u3002\u305d\u306e\u8aac\u660e\u306e\u7e70\u308a\u8fd4\u3057\u3092\u6e1b\u3089\u3059\u4ed5\u7d44\u307f\u304c\u3001Hindsight\u3084\u3067\u3002\u4f1a\u8a71\u306a\u3069\u304b\u3089\u60c5\u5831\u3092\u4fdd\u5b58\u3057\u3001\u8cea\u554f\u306b\u95a2\u9023\u3059\u308b\u8a18\u61b6\u3092&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/blog.himajin.ddo.jp\/?p=207\"><span class=\"more-text\">\u7d9a\u304d\u3092\u8aad\u3080<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,7],"tags":[],"class_list":["post-207","post","type-post","status-publish","format-standard","hentry","category-github-ai-ml","category-github-trending"],"_links":{"self":[{"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=\/wp\/v2\/posts\/207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=207"}],"version-history":[{"count":8,"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=\/wp\/v2\/posts\/207\/revisions"}],"predecessor-version":[{"id":231,"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=\/wp\/v2\/posts\/207\/revisions\/231"}],"wp:attachment":[{"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.himajin.ddo.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}