RAGベクトルデータベース選択:Pinecone vs Weaviate vs Milvus徹底比較
午前三時、サーバー監視ダッシュボードの赤い曲線が上昇し続けている——P99レイテンシーが800msに急上昇、RAGシステムには200万件のドキュメントしかない。正直、頭が空白になった。
これは典型的な選択ミスのケースだ。チームは当初Chromaでプロトタイプを構築——2週間で完成、すべて美しく見えた。しかしデータ量が100万件を超えた後、クエリレイテンシーが20msから急上昇し、ユーザー体験が崩壊した。別のソリューションへの移行にはさらに3週間かかった——データエクスポート、ベクトル再構築、インデックス設定、各ステップで罠があった。
正しいベクトルデータベースを選べば、RAGシステムは半分成功する。これは口だけではなく、実戦で涙で学んだ教訓だ。検索段階がAIが「正しい」情報を見つけるかどうかを決定し、生成段階がその上で「良い」回答を出す。検索が失敗すれば、後でPromptやモデルを調整しても無駄だ。
この記事では、Pinecone、Weaviate、Milvusの3つの主流ベクトルデータベースの実際の比較データを公開する——パフォーマンスベンチマーク、価格モデル、適用シーン、チームが遭遇した罠も含む。読み終えると、明確な選択フレームワークを持って、自分のシーンに何が適しているかを知り、実際のコスト予算を計算できる。
第一章:ベクトルデータベース選択が重要な理由
1.1 RAGシステムにおけるベクトルデータベースの役割
多くの人が误解している:ベクトルデータベースはEmbeddingを保存する「倉庫」だ。実際、その核心価値は保存ではなく、「意味的類似性」を効率的に検索することだ。
従来のデータベースは正確なマッチングに優れている——WHERE id = 100のような。しかしRAGシステムは別の問題を解決する:ユーザーが「Pythonコードのパフォーマンスを最適化する方法」と聞くとき、意味的に関連するドキュメントが必要で、キーワードマッチではない。ベクトルデータベースはテキスト、画像、音声を高次元ベクトルに変換(OpenAIのtext-embedding-3-smallは1536次元ベクトルを生成)、ANN(近似最近傍)アルゴリズムで百万〜億級ベクトルから「最も近い」候補を迅速に見つける。
ANNアルゴリズムの核心トレードオフ:再現率 vs クエリレイテンシー。全ベクトル距離の正確な計算は高コスト——100万個の1536次元ベクトル、全スキャンは数十秒かかる。ANNアルゴリズム(HNSW、IVF、PQ)は「近似」でレイテンシーをミリ秒級に圧縮するが、一部の関連結果を見逃す可能性がある。異なるベクトルデータベースは「再現率-レイテンシー」曲線上で異なる戦略を持っており、RAGシステムの検索精度に直接影響する。
1.2 選択ミスの実際のコスト
チームの経験は典型的なケースだ。Chromaはローカル開発で確かに使いやすい——pip install chromadb、5分で動く。しかしドキュメントが100万件を超えた後、単一サーバーのボトルネックが露呈した:クロスマシン拡張は自分でサーバー管理が必要——データ移行、インデックス再構築、負荷分散——すべて手動。
さらに隠れた罠:Pineconeのコスト暴走。無料層は100万ベクトルをサポート、魅力的に見える。しかし有料層に入ると、ストレージとクエリ数の二重課金モデルが予期せず襲ってくる。法律AIをやっている友人、5000万ドキュメント、毎日10万クエリ、月額請求が$3000+に急上昇——当初の$500予算見積もりを大幅に超えた。
選択ミスは技術問題だけでなく、お金の問題だ。
1.3 2026年ベクトルデータベース情勢
現在の情勢は基本的に「三強争奪 + 新勢力台頭」だ:
三大主力:
- Pinecone:完全管理Serverless、すぐ使える、迅速起動に最適。2026年のServerless方案後、参入障壁がさらに低下。
- Weaviate:モジュラー設計、グラフデータベース機能内蔵、ハイブリッド検索(キーワード+ベクトル)が突出。
- Milvus:分散クラウドネイティブアーキテクチャ、GPU加速、億級ベクトルでミリ秒応答、大規模シーンに最適。
新勢力:
- pgvector:PostgreSQL拡張、既にPGを使っているなら、追加コストゼロでベクトル検索接入可能。軽量、小規模シーンに適合。
- Qdrant:オープンソース、パフォーマンス良好、価値志向、自ホストシーンでMilvusより軽量。
この記事は前三つを重点的に比較し、「ゼロOps管理」から「大規模自ホスト」の主流需要をカバーする。pgvectorとQdrantは特殊シーン部分で紹介する。
第二章:三つのデータベースの核心差異比較
2.1 アーキテクチャ設計:三つの異なるアプローチ
Milvus:分散クラウドネイティブアーキテクチャ
Milvusの設計哲学は「大規模のために生まれた」。天生で分散アーキテクチャ——Kubernetesデプロイ、マルチレプリカ同期、水平拡張をサポート。核心コンポーネントは明確に分離:コーディネーターノードはスケジュール管理、データノードはストレージ管理、クエリノードは検索管理——各々が職責を果たす。
Milvusデプロイには専門Ops能力が必要。Kubernetes、クラスタ設定、GPU加速パラメータ調整を理解する必要がある。利点:一度動けば、1000万から10億ベクトルへ、ノード追加で拡張、アーキテクチャ変更不要。Milvus公式ドキュメントの提案:本番環境最低3ノードクラスタ、単ノード16GB RAM最低、億級データはGPU加速必要(NVIDIA A100以上)。
Pinecone:完全管理Serverless
Pineconeは「安心」を極限まで追求。サーバー管理不要、インデックス設定不要、スケーリング心配不要——アカウント登録、インデックス作成、API呼び出し、3ステップで完了。2026年のServerless方案はさらに起動コストを最低に圧縮:実際使用量課金、アイドル時ほぼ無料。
しかし便利さの背後には柔軟性の制限がある。Pineconeは垂直スケーリングのみ——インデックス容量上限はクラウドプロバイダーが制御、Milvusのようにノード追加で水平拡張できない。カスタムインデックスパラメータ(HNSWのM、efパラメータなど)も制限あり、プリセット設定のみ選択可能。シーンが検索パフォーマンスの深い調整を必要とする場合、Pineconeは「拘束されている」感じがあるかもしれない。
Weaviate:モジュラー設計 + グラフデータベースDNA
Weaviateのアーキテクチャは特別:ベクトルデータベースとグラフデータベースを融合している。各ベクトルは「オブジェクト」属性(テキスト、画像、メタデータ)を持って、オブジェクト間の意味関係も定義可能。これは知識グラフシーンに非常に友好——類似ベクトルを見つけるだけでなく、関係チェーンを辿って検索できる。
モジュラー化はWeaviateの別のハイライト。EmbeddingモジュールはOpenAI、Cohere、ローカルモデルに接続可能;ベクトル化モジュールはカスタマイズ可能;マルチモーダル検索(テキスト検索画像)は内蔵サポート。デプロイ方式は柔軟:自ホスト、クラウドホスト(Weaviate Cloud)、Hybridモードすべて可能。しかし柔軟性は設定項目が多いことを意味し、Pineconeより参入障壁が少し高い。
2.2 パフォーマンスベンチマーク:実際データ比較
下の表のデータはTencent Cloud 2025比較レビュー、IoT Digital Twin PLM 2026ベンチマーク報告から。テスト条件:1536次元ベクトル(OpenAI text-embedding-3-small)、HNSWインデックス、再現率95%。
| 製品 | 単一インデックス容量 | レイテンシー(P99) | ハイブリッド検索 | 分散サポート | GPU加速 |
|---|---|---|---|---|---|
| Milvus | 億級+ | <50ms | サポート | サポート | サポート |
| Weaviate | 千億級+ | <150ms | サポート | サポート | 非サポート |
| Pinecone | 十億級 | <100ms | サポート | 自動スケーリング | 非サポート |
いくつかの核心観察:
-
レイテンシー差が明確:Milvus GPU加速後P99レイテンシー50ms以内、Weaviateより3倍速い。レイテンシー敏感なシーン(リアルタイムQ&A、カスタマーチャット)では、この差をユーザーが感知できる。
-
容量上限が異なる:Weaviateは千億級サポートを宣称、しかし1億を超えた後パフォーマンス低下が明確。Milvusは億級規模で安定、分散アーキテクチャとデータシャーディング戦略による。Pineconeの十億級上限は中規模シーンで十分、しかし大規模企業シーンで制限される可能性がある。
-
ハイブリッド検索が標準化:三つすべてベクトル+キーワードハイブリッド検索をサポート。Weaviateはここで突出——グラフデータベースDNAが意味関係モデル化をより自然にし、「複雑意味」シーンで純ベクトル検索より5-10%高い検索精度(Tencent Cloudデータ)。
2.3 価格モデル:実際コストを計算
価格は各社で異なるアプローチ。主要方案のコスト構成を整理した:
Pinecone価格:
- 無料層:100万ベクトル、$0ストレージコスト、限定クエリ数
- 有料層:$70/月最低(10億ストレージ含む)、超過分はクエリ課金
- 計算式:
Cost = $70 + (クエリ数 × $0.0001/クエリ)(無料枠超過後)
Weaviate価格:
- クラウドホスト:$0.01/GB/月(ストレージ)、クエリ数無制限
- 計算式:
Cost = (ベクトル数 × 1536次元 × 4バイト ÷ 1GB) × $0.01 × 月数 - 自ホスト:オープンソース無料、サーバーコスト自己負担
Milvus価格:
- オープンソース:自ホスト無料
- クラウドホスト(Tencent Cloud/AWS):ノード課金、高構成ノード約$2000/月
- 計算式:
Cost = ノード数 × $2000/月 + GPUコスト(必要時)
実際計算例:5000万ベクトル、毎日10万クエリ、1536次元。
| 方案 | 月額コスト見積もり | 説明 |
|---|---|---|
| Pinecone有料 | $70 + 10万×30×$0.0001 = $370 | クエリ課金、クエリ多いとコスト高 |
| Weaviateクラウドホスト | 5000万×1536×4÷1024³ × $0.01 ≈ $3 | ストレージ課金、クエリ無制限、超安 |
| Milvus自ホスト | サーバー$500 + GPU$1000 = $1500 | 長期使用でコスト分散、Ops人力コスト別 |
ここにポイントがある:Weaviateのストレージ課金モデルは「高頻度クエリ」シーンでコスト効果が極めて高い。しかし注意——自ホスト方案のOpsコストは多くの人が計算に入れていない——Kubernetes理解のOpsエンジニア雇用、年俸最低$50k。
第三章:異なるシーンの選択判断ツリー
選択には「最良」はない、「最適」がある。データ量とチーム規模で判断フレームワークを提供する。
3.1 迅速プロトタイプ検証(<100万ベクトル)
推奨方案:Pinecone無料層またはChromaローカルデプロイ
製品プロトタイプ、内部Demo、データ増加速度が不明確な場合、Pinecone無料層を優先。理由は簡単:ゼロOps、5分統合、無料枠十分。Chromaも可能、しかし注意——100万突破後、移行は痛苦になる。
起動速度比較:
Pinecone:
from pinecone import Pinecone
pc = Pinecone(api_key="your-api-key")
index = pc.Index("my-index") # インデックスはクラウドで作成済み
Chroma:
import chromadb
client = chromadb.Client() # ローカルメモリモード
collection = client.create_collection("my-collection")
両者とも起動が速い、しかしPineconeのインデックスはクラウドで永続化、Chromaローカルモードは再起動でデータ消失。プロトタイプがクロスセッション永続化を必要とする場合、Pinecone無料層が適合。
3.2 本番中規模(100万〜1億ベクトル)
推奨方案:Pinecone有料層またはWeaviateクラウドホスト
この段階では2つの要素を考慮:Opsコストと検索精度。
チームが専用Opsがない場合、管理サービスを優先。PineconeとWeaviateクラウドホストは「ゼロOps」を実現。しかし価格モデルは大きく異なる:高頻度クエリシーンはWeaviate(ストレージ課金)、低頻度クエリはPinecone(ストレージ+クエリ二重課金)。
検索精度が高要求(法律AI、医療Q&A)の場合、Weaviateのハイブリッド検索がより良い。Tencent CloudデータはWeaviateが「複雑意味」シーンで5-10%高い精度を示す。グラフデータベース機能で知識グラフ検索も可能——類似ドキュメントだけでなく、意味関係チェーンで関連概念を検索。
コスト計算提案:この式で見積もり。
月額コスト = (ベクトル数 × 次元 × 4バイト ÷ 1GB) × ストレージ単価 × 月数
+ (日平均クエリ数 × 30 × クエリ単価)
Weaviateクエリ単価は0(ストレージ課金)、Pineconeクエリ単価約$0.0001/クエリ。データ量を代入して計算——差は大きい可能性がある。
3.3 大規模企業級(>1億ベクトル)
推奨方案:Milvus自ホスト + Kubernetes
億級ベクトルシーン、管理サービスのコスト効果は崩壊。Pineconeの十億級上限は不足かもしれない、Weaviateクラウドホストのストレージ課金は億級規模でコストも高い。ここでMilvus自ホストが最適解——オープンソース無料、GPU加速、水平拡張。
前提:Opsチームが必要。Milvusデプロイには:
- Kubernetesクラスタ(最低3ノード)
- GPUサーバー(NVIDIA A100以上)
- 専門Opsがインデックスパラメータ設定、レイテンシー調整
Ops人力コストは無視できない。チームにKubernetes Ops能力がない場合、雇用/トレーニングコストを計算に入れる。長期来看、億級データ自ホスト方案の総コストは管理サービスより低い——しかし初期投資は大きく、データ増加が確定、長期運用のプロジェクトに適合。
3.4 特殊シーン選択
マルチモーダル検索(テキスト検索画像、画像検索画像):Weaviate
Weaviateは内蔵マルチモーダルベクトル化モジュール(CLIP、マルチモーダルEmbeddingモデル)。画像を直接アップロード、自動ベクトル化、テキストベクトルと同じインデックスで検索。Milvusもマルチモーダルをサポート、しかしベクトル化モジュール設定が必要。Pinecone現在はマルチモーダル非サポート——アップロードしたベクトルのみ保存、ベクトル化ロジックは自分で処理。
知識グラフ + RAG:Weaviate
WeaviateのグラフデータベースDNAは「オブジェクト-オブジェクト」関係定義を可能にする。「会社-従業員-プロジェクト」意味チェーンのように、類似ドキュメントだけでなく、関係を辿って関連エンティティを検索。MilvusとPineconeはこの能力を非サポート——純ベクトル検索のみ。
軽量/既存PostgreSQL:pgvector
既にPostgreSQLを使用、小規模(百万級以内)の場合、pgvectorはゼロコスト方案。拡張インストールCREATE EXTENSION vector;、既存データベースでベクトル保存、ANN検索可能。欠点:専用ベクトルデータベースよりパフォーマンス低、100万ベクトル超過でレイテンシー明確上昇。
第四章:LangChain統合実践コード
以下は3つのデータベースのLangChain統合完全サンプル。各サンプルは初期化、ベクトル追加、クエリの3つの核心ステップを含む、直接動かせる。
4.1 Pinecone + LangChain
# 依存関係インストール
# pip install pinecone-client langchain-openai
from pinecone import Pinecone
from langchain_openai import OpenAIEmbeddings
from langchain_pinecone import PineconeVectorStore
# Pinecone初期化
pc = Pinecone(api_key="your-pinecone-api-key")
index_name = "rag-demo"
# インデックス作成(初回のみ)
if index_name not in pc.list_indexes().names():
pc.create_index(
name=index_name,
dimension=1536, # OpenAI text-embedding-3-small
metric="cosine",
spec={"serverless": {"cloud": "aws", "region": "us-east-1"}}
)
index = pc.Index(index_name)
# LangChainベクトルストア初期化
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = PineconeVectorStore(
index=index,
embedding=embeddings,
text_key="text"
)
# ドキュメント追加
from langchain.schema import Document
docs = [
Document(page_content="PythonパフォーマンスTips:リスト内包表記でループを代替", metadata={"source": "blog"}),
Document(page_content="NumPyベクトル化演算は純Pythonより100倍速い", metadata={"source": "blog"}),
]
vectorstore.add_documents(docs)
# クエリ検索
results = vectorstore.similarity_search("Pythonパフォーマンス最適化方法", k=3)
for doc in results:
print(doc.page_content)
4.2 Weaviate + LangChain
# 依存関係インストール
# pip install weaviate-client langchain-openai
import weaviate
from langchain_openai import OpenAIEmbeddings
from langchain_weaviate import WeaviateVectorStore
# Weaviate初期化(クラウドホスト例)
client = weaviate.connect_to_wcs(
cluster_url="your-cluster-url.weaviate.network",
auth_credentials=weaviate.auth.AuthApiKey("your-weaviate-api-key"),
)
# LangChainベクトルストア初期化
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = WeaviateVectorStore(
client=client,
index_name="RagDemo",
text_key="content",
embedding=embeddings,
)
# ドキュメント追加
from langchain.schema import Document
docs = [
Document(page_content="RAGシステム検索精度はベクトルデータベース選択に依存", metadata={"category": "tech"}),
Document(page_content="Weaviateハイブリッド検索は意味検索精度を向上", metadata={"category": "tech"}),
]
vectorstore.add_documents(docs)
# ハイブリッド検索(ベクトル + キーワード)
results = vectorstore.similarity_search(
query="RAG検索最適化",
k=3,
)
for doc in results:
print(doc.page_content)
client.close() # 接続終了
4.3 Milvus + LangChain
# 依存関係インストール
# pip install pymilvus langchain-openai
from pymilvus import MilvusClient
from langchain_openai import OpenAIEmbeddings
from langchain_milvus import Milvus
# Milvus初期化(ローカル例)
client = MilvusClient(uri="http://localhost:19530")
# コレクション作成
collection_name = "rag_demo"
if client.has_collection(collection_name):
client.drop_collection(collection_name)
client.create_collection(
collection_name=collection_name,
dimension=1536,
)
# LangChainベクトルストア初期化
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Milvus(
embedding_function=embeddings,
collection_name=collection_name,
connection_args={"uri": "http://localhost:19530"},
)
# ドキュメント追加
from langchain.schema import Document
docs = [
Document(page_content="Milvus GPU加速は億級ベクトルミリ秒検索を実現", metadata={"gpu": True}),
Document(page_content="分散アーキテクチャは百億ベクトル水平拡張をサポート", metadata={"scale": "large"}),
]
vectorstore.add_documents(docs)
# クエリ検索
results = vectorstore.similarity_search("大規模ベクトル検索", k=3)
for doc in results:
print(doc.page_content)
4.4 移行パス:Chromaから管理方案へ
Chromaでプロトタイプを作成、本番環境へ移行する場合、3ステッププロセス:
Step 1:Chromaデータエクスポート
import chromadb
client = chromadb.PersistentClient(path="./chroma_db")
collection = client.get_collection("my_collection")
# 全ベクトル取得
results = collection.get(include=["embeddings", "metadatas", "documents"])
vectors = results["embeddings"]
metadatas = results["metadatas"]
documents = results["documents"]
Step 2:ターゲットデータベースへバッチインポート
# Pineconeへインポート
from langchain.schema import Document
docs = [
Document(page_content=documents[i], metadata=metadatas[i])
for i in range(len(documents))
]
pinecone_store.add_documents(docs) # バッチアップロード
Step 3:インデックス再構築と検証
# 検索結果一致性検証
chroma_results = collection.query(query_texts=["test query"], n_results=5)
pinecone_results = pinecone_store.similarity_search("test query", k=5)
# 再現率比較、移行成功確認
移行時間見積もり:100万ベクトルChromaからPineconeへ、約2-3時間(ネットワーク帯域に依存)。低トラフィック時間実行を推奨、サービス影響回避。
第五章:まとめと選択判断表
5.1 一図勝千語:選択判断表
| シーン | データ量 | チーム規模 | 推奨方案 | 理由 |
|---|---|---|---|---|
| プロトタイプ | <100万 | 1-2人 | Pinecone無料層 | ゼロOps、迅速起動、無料枠十分 |
| 本番中規模 | 100万〜1億 | 3-5人、Opsなし | Weaviateクラウドホスト | ハイブリッド検索精度高、ストレージ課金低コスト |
| 本番高頻度クエリ | 100万〜1億 | 3-5人 | Weaviateクラウドホスト | クエリ無制限、高頻度シーン最高価値 |
| 本番低頻度クエリ | 100万〜1億 | 3-5人 | Pinecone有料 | クエリ課金、低頻度シーンコスト制御可能 |
| 大規模企業級 | >1億 | 5人以上+Opsチーム | Milvus自ホスト | GPU加速、水平拡張、長期低コスト |
| マルチモーダル検索 | 不問 | 不問 | Weaviate | 内蔵マルチモーダルサポート、すぐ使える |
| 知識グラフRAG | 不問 | 不問 | Weaviate | グラフデータベースDNA、意味関係モデル化 |
| 軽量/既存PG | <100万 | 不問 | pgvector | 追加コストゼロ、拡張すぐ使える |
5.2 3ステップ選択プロセス
-
データ量と増加予期を評価
- 現在何ドキュメント?
- 1年後の増加予期?
- 増加速度は線形か指数?
-
実際コストを計算
月額コスト = ストレージコスト + クエリコスト + Opsコスト上式でデータ量を代入、管理方案と自ホスト方案の総コストを比較。Opsコスト忘れない——管理方案はOps節約、自ホストは長期分散で安い可能性。
-
小規模テスト検証
- 10%データでプロトタイプテスト
- P99レイテンシー、再現率、QPS測定
- 期待に合う確認後に全移行
5.3 3つの常見選択ミス
ミス1:価格だけでOpsコスト見ない
多くの人はオープンソース方案を「無料だから」選択、しかし自ホスト人力コストは無視される。Kubernetes Opsエンジニア雇用は年$50k+;既存チームトレーニング、時間コスト1-2ヶ月。管理方案は高く見える、しかし節約したOpsコストを計算に入れる必要。
ミス2:ベクトル次元のパフォーマンス影響無視
OpenAIのtext-embedding-3-largeは3072次元ベクトル出力——text-embedding-3-small(1536次元)より2倍大きい。高次元は高レイテンシーと高ストレージコストを意味。データベース選択前にEmbeddingモデルを決定——高次元ベクトル最適化非サポートで後から発見しない。
ミス3:選択後に必要なEmbeddingモデル非サポートを発見
Pineconeはベクトルのみ保存、ベクトル化サービス提供なし——Embedding自分で生成してアップロード。Weaviateは内蔵ベクトル化モジュール、OpenAI、Cohere、ローカルモデル直接接入。「ドキュメントアップロード自動ベクトル化」が必要な場合、選択時にこの能力を確認。
選択には標準答案がない。シーンを明確に、実際コストを計算、小規模検証後に全デプロイ。この記事が罠を回避、最適な方案を選ぶのに役立つことを願う。
実践で他の問題に遭遇した場合、コメント欄で交流歓迎——私も継続的に罠から学んでいる。
FAQ
Pinecone、Weaviate、Milvus、どれがレイテンシー最低?
高頻度クエリシーンでどれが最も節約?
Opsチームなし、どれを選択?
Chromaから移行にどれくらい時間?
ベクトル次元どう選ぶ?
知識グラフ + RAG、どれを選択?
9 min read · 公開日: 2026年4月27日 · 更新日: 2026年4月29日
AI 開発実践
検索からこのページに来た場合は、前後の記事もあわせて読むと同じテーマの理解がかなり早く深まります。
前の記事
エージェントツール呼び出し実践:AIに外部APIとサービスを呼び出させる
Function CallingからMCPまで、ClaudeとOpenAIのツール呼び出しメカニズムを詳しく解説。完全なコード例とベストプラクティスで、API呼び出し機能を持つAIエージェントを構築
第 16 / 28 記事
次の記事
RAG + Agent:次世代 AI アプリケーションアーキテクチャ
従来の RAG から Agentic RAG へのアーキテクチャ進化を解説。10種類の RAG パターン、フレームワーク選定、エンタープライズ実装ロードマップ、スマートカスタマーサポートの実践事例を詳しく紹介します
第 18 / 28 記事
関連記事
Workers AI 完全ガイド:毎日10,000回の無料LLM呼び出し、OpenAI比90%コスト削減
Workers AI 完全ガイド:毎日10,000回の無料LLM呼び出し、OpenAI比90%コスト削減
AIで10,000行のレガシーコードをリファクタリング:1ヶ月分の仕事を2週間で完了したリアルな振り返り
AIで10,000行のレガシーコードをリファクタリング:1ヶ月分の仕事を2週間で完了したリアルな振り返り
OpenAI APIがタイムアウトする?Workersで専用トンネルを構築、コストゼロで安定化


コメント
GitHubアカウントでログインしてコメントできます