- AWS
Bedrock Knowledge Basesの作り方|boto3でRAG構築
Amazon Bedrock Knowledge Bases(ナレッジベース)は、S3 などに置いた社内文書を、分割(チャンキング)・ベクトル化(エンベディング)・保存・検索まで AWS 側で受け持つ、RAG(検索拡張生成)の仕組みです。 作る手順は「ナレッジベース → データソース → 取り込み(同期)→ 検索」の4段階です。
| 手順 | API(boto3) | クライアント |
|---|---|---|
| ① ナレッジベースを作る | create_knowledge_base |
bedrock-agent |
| ② データソース(S3 など)をつなぐ | create_data_source |
bedrock-agent |
| ③ 文書を取り込む(同期) | start_ingestion_job → get_ingestion_job |
bedrock-agent |
| ④a 検索だけする | retrieve |
bedrock-agent-runtime |
| ④b 検索して答えを作る | retrieve_and_generate |
bedrock-agent-runtime |
作る・管理する API は bedrock-agent、検索する API は bedrock-agent-runtime と、クライアントが分かれています。 モデルを呼ぶ bedrock-runtime とも別です。
確認環境:boto3 1.43.112(botocore 1.43.112)、Python 3.11。AWS には接続せず、botocore に入っている bedrock-agent(API 版 2023-06-05、79 操作)と bedrock-agent-runtime(API 版 2023-07-26、35 操作)のサービス定義を読み、下のコードを botocore.stub.Stubber で実行して、リクエストの形と、送る前の検証エラーを確かめました。チャンキング・ベクトルストア・料金・応答の中身の意味は、AWS のドキュメントと料金ページで確かめています(確認日 2026年10月13日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Bedrock Knowledge Basesの作り方|boto3でRAG構築」
全体の仕組み
[S3 の文書] --取り込み--> [パース] -> [チャンキング] -> [エンベディングモデル] -> [ベクトルストア]
|
[質問] -> [エンベディング] -> [ベクトルストアを検索] -> 上位 N 件のチャンク ------------+
|
retrieve はここで返す / retrieve_and_generate は LLM に渡して答えを作る
| 用語 | 意味 |
|---|---|
| チャンク | 文書を検索しやすい大きさに切った断片 |
| エンベディング | 文章を数値のベクトルにすること。意味が近い文は近いベクトルになる |
| ベクトルストア | ベクトルを保存し、近いものを探すデータベース |
| 取り込みジョブ | データソースの文書を読み、チャンク化・ベクトル化して保存する処理 |
エンベディングとベクトル検索の考え方は、関連記事「エンベディングとは?ベクトル検索とコサイン類似度を計算例で解説」で扱っています。
ナレッジベースの種類(boto3 の定義)
create_knowledge_base の knowledgeBaseConfiguration.type に入る値は4つでした。
| type | 中身 | ベクトルストア |
|---|---|---|
VECTOR |
文書をベクトル化して検索する。この記事の中心 | 自分で用意(下の表) |
MANAGED |
マネージド型。保存・インデックス・検索のインフラを AWS が管理 | 用意しない |
KENDRA |
Amazon Kendra のインデックスを使う | Kendra |
SQL |
Redshift などの構造化データに、SQL を生成して問い合わせる | Redshift |
ドキュメントでは、マネージド型(MANAGED)は Amazon Bedrock AgentCore が保存・インデックス・検索のインフラを管理し、既定ではエンベディングモデルの選択も要らないと説明されています。検索のときは vectorSearchConfiguration ではなく managedSearchConfiguration を使います。
① ナレッジベースを作る(S3 Vectors の例)
import boto3
REGION = "ap-northeast-1"
ACCOUNT = "123456789012"
agent = boto3.client("bedrock-agent", region_name=REGION)
kb = agent.create_knowledge_base(
name="rjc-docs-kb",
roleArn=f"arn:aws:iam::{ACCOUNT}:role/BedrockKBRole",
knowledgeBaseConfiguration={
"type": "VECTOR",
"vectorKnowledgeBaseConfiguration": {
"embeddingModelArn": f"arn:aws:bedrock:{REGION}::foundation-model/amazon.titan-embed-text-v2:0",
"embeddingModelConfiguration": {
"bedrockEmbeddingModelConfiguration": {"dimensions": 1024, "embeddingDataType": "FLOAT32"}
},
},
},
storageConfiguration={
"type": "S3_VECTORS",
"s3VectorsConfiguration": {
"vectorBucketArn": f"arn:aws:s3vectors:{REGION}:{ACCOUNT}:bucket/rjc-vectors",
"indexName": "rjc-docs-index",
},
},
)
kb_id = kb["knowledgeBase"]["knowledgeBaseId"]
print(kb_id, kb["knowledgeBase"]["status"]) # 作成直後は CREATING
Stubber で実行すると、上のパラメーターは検証を通り、create_knowledge_base: KB12345678 CREATING と表示されました(ID と状態は Stubber に入れた値です)。
| 必須の引数 | 内容 |
|---|---|
name |
ナレッジベースの名前 |
roleArn |
Bedrock が使う IAM ロール(下で説明) |
knowledgeBaseConfiguration |
種類とエンベディングモデル |
storageConfiguration |
ベクトルストア(VECTOR のとき) |
ナレッジベースの状態(status)は、CREATING・ACTIVE・DELETING・UPDATING・FAILED・DELETE_UNSUCCESSFUL・UPDATE_UNSUCCESSFUL の7つでした。
ベクトルストアの選択肢
storageConfiguration.type に入る値は8つです。注意点は AWS のドキュメント「Supported vector stores」からまとめました。
| type | サービス | 主な注意点(ドキュメント) |
|---|---|---|
S3_VECTORS |
Amazon S3 Vectors | 浮動小数のみ(バイナリ不可)。メタデータは1ベクトル1KB・35キーまで |
OPENSEARCH_SERVERLESS |
OpenSearch Serverless | バイナリのベクトル可。エンジンは faiss |
OPENSEARCH_MANAGED_CLUSTER |
OpenSearch Service(ドメイン) | パブリックアクセスのみ(VPC 内は不可)。faiss のみ |
RDS |
Aurora PostgreSQL(pgvector) | 列とインデックスを先に作る。列は作成後に変えられない |
NEPTUNE_ANALYTICS |
Neptune Analytics | GraphRAG。空のグラフにベクトル索引を作る |
PINECONE |
Pinecone | API キーを Secrets Manager に置く |
REDIS_ENTERPRISE_CLOUD |
Redis Enterprise Cloud | TLS 必須。証明書類を Secrets Manager に置く |
MONGO_DB_ATLAS |
MongoDB Atlas | メタデータで絞るにはフィルター設定を手で作る |
| 比べること | ドキュメントの記載 |
|---|---|
| ハイブリッド検索(ベクトル+全文) | RDS・OpenSearch Serverless・MongoDB(絞り込み可能なテキスト列があるとき) |
| バイナリのベクトル | OpenSearch Serverless・OpenSearch Managed Clusters のみ |
| 階層チャンキング | S3 Vectors では勧めない(メタデータの上限に当たりやすい) |
Aurora PostgreSQL の pgvector を自分で扱う方法は、関連記事「pgvectorの使い方|PostgreSQLでベクトル検索をコピペで構築」で扱っています。
IAM ロール(サービスロール)
ナレッジベースが使うロールの信頼ポリシーです(ドキュメントの例をもとに、リージョンを東京にしています)。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"Service": "bedrock.amazonaws.com"},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {"aws:SourceAccount": "123456789012"},
"ArnLike": {"AWS:SourceArn": "arn:aws:bedrock:ap-northeast-1:123456789012:knowledge-base/*"}
}
}]
}
| 権限を与える先 | アクション(ドキュメント) |
|---|---|
| エンベディングモデル | bedrock:InvokeModel |
| S3 のデータソース | s3:ListBucket(バケット)・s3:GetObject(バケット/*) |
| S3 Vectors | s3vectors:PutVectors・GetVectors・DeleteVectors・QueryVectors・GetIndex |
ドキュメントでは、作成後に knowledge-base/* の * を実際の ID に絞ることが勧められています。
② データソースをつなぎ、チャンキングを決める
ds = agent.create_data_source(
knowledgeBaseId=kb_id,
name="rjc-docs-s3",
dataSourceConfiguration={
"type": "S3",
"s3Configuration": {
"bucketArn": "arn:aws:s3:::rjc-docs-bucket",
"inclusionPrefixes": ["manuals/"],
},
},
vectorIngestionConfiguration={
"chunkingConfiguration": {
"chunkingStrategy": "FIXED_SIZE",
"fixedSizeChunkingConfiguration": {"maxTokens": 300, "overlapPercentage": 20},
}
},
dataDeletionPolicy="DELETE",
)
ds_id = ds["dataSource"]["dataSourceId"]
| 引数 | 内容 |
|---|---|
dataSourceConfiguration.type |
S3・WEB・CONFLUENCE・SALESFORCE・SHAREPOINT・CUSTOM など |
inclusionPrefixes |
S3 の中で取り込むプレフィックス |
dataDeletionPolicy |
データソースを消したときにベクトルも消すか(DELETE・RETAIN) |
vectorIngestionConfiguration |
チャンキング・パース・変換の設定 |
チャンキングの設定は、データソースを作るときに決めます。 S3 コネクタのドキュメントに「データソースにつないだあとでチャンキング戦略は変えられない」とあります。
チャンキング戦略の一覧
| chunkingStrategy | 切り方 | 主な設定(boto3 の範囲) |
|---|---|---|
| 指定なし(既定) | 約 300 トークン。文の区切りを守る | ― |
FIXED_SIZE |
決めたトークン数で切る | maxTokens 1〜8192、overlapPercentage 1〜99 |
HIERARCHICAL |
親(大)と子(小)の2段 | levelConfigurations[].maxTokens、overlapTokens |
SEMANTIC |
意味の切れ目で切る | maxTokens、bufferSize 0〜1、breakpointPercentileThreshold 50〜99 |
NONE |
1ファイルを1チャンク | ― |
ドキュメントの説明で、選ぶときに効くものです。
| 戦略 | 知っておくこと |
|---|---|
HIERARCHICAL |
子チャンクで探して親チャンクに置き換えて返すので、返る件数が numberOfResults より減ることがある |
SEMANTIC |
切れ目の判定に基盤モデルを使うため、データ量に応じた追加料金がかかる |
NONE |
引用にページ番号が出ず、x-amz-bedrock-kb-document-page-number で絞り込めない |
チャンクの大きさと検索の精度の関係は、関連記事「RAGの精度改善の方法一覧|原因の切り分けと評価指標の計算」で扱っています。
パース(文書の読み取り方)
parsingConfiguration.parsingStrategy の値は、BEDROCK_FOUNDATION_MODEL(基盤モデルで表や図も読む)・BEDROCK_DATA_AUTOMATION・SMART_PARSING・MULTI_MODAL_EMBEDDINGS の4つでした。指定しないときは、ドキュメントの「Amazon Bedrock default parser」が使われます。.txt・.md・.html・.doc/.docx・.xls/.xlsx・.pdf のテキストだけを読み、利用料はかかりません。図や表を含む文書には、Bedrock Data Automation か基盤モデルでのパースが勧められています。
③ 取り込み(同期)を実行する
start_ingestion_job は開始するだけで、すぐ返ります。 boto3 の bedrock-agent にはウェイター(終わるまで待つ機能)がなかったので、get_ingestion_job で状態を見ます。
import time
job = agent.start_ingestion_job(knowledgeBaseId=kb_id, dataSourceId=ds_id)["ingestionJob"]
while job["status"] in ("STARTING", "IN_PROGRESS"):
time.sleep(10)
job = agent.get_ingestion_job(
knowledgeBaseId=kb_id, dataSourceId=ds_id, ingestionJobId=job["ingestionJobId"]
)["ingestionJob"]
print(job["status"], job.get("statistics"))
| ジョブの status | 意味 |
|---|---|
STARTING / IN_PROGRESS |
実行中 |
COMPLETE |
完了 |
FAILED |
失敗(failureReasons を見る) |
STOPPING / STOPPED |
stop_ingestion_job で止めた |
statistics には、次のキーが入ります(値は Stubber に入れたものです)。
{'numberOfDocumentsScanned': 12, 'numberOfMetadataDocumentsScanned': 0,
'numberOfNewDocumentsIndexed': 12, 'numberOfModifiedDocumentsIndexed': 0,
'numberOfMetadataDocumentsModified': 0, 'numberOfDocumentsDeleted': 0, 'numberOfDocumentsFailed': 0}
S3 の文書を変えても、同期し直すまで検索結果には反映されません。 定期的に同期するなら、スケジュール実行(EventBridge Scheduler と Lambda など)から start_ingestion_job を呼ぶ方法があります。文書を直接インデックスに入れる ingest_knowledge_base_documents もあり、ドキュメントでは S3 と CUSTOM のデータソースが対象で、CUSTOM なら同期は要らないとされています(S3 では、S3 側も同じように変えないと次の同期で上書きされます)。
④a retrieve:検索だけする
rt = boto3.client("bedrock-agent-runtime", region_name=REGION)
res = rt.retrieve(
knowledgeBaseId=kb_id,
retrievalQuery={"text": "有給休暇の申請方法は?"},
retrievalConfiguration={
"vectorSearchConfiguration": {
"numberOfResults": 5,
"overrideSearchType": "HYBRID",
"filter": {"equals": {"key": "department", "value": "hr"}},
}
},
)
for r in res["retrievalResults"]:
print(r["score"], r["location"]["s3Location"]["uri"], r["content"]["text"][:50])
Stubber で実行した表示です(値は Stubber に入れたもの)。
0.71 s3://rjc-docs-bucket/manuals/hr.pdf 有給休暇は勤怠システムから3日前までに申請します。
リクエストの形
| 引数 | 内容 |
|---|---|
knowledgeBaseId(必須) |
ナレッジベースの ID |
retrievalQuery(必須) |
{"text": "…"}。画像で探す {"type": "IMAGE", "image": {...}} もある |
numberOfResults |
返す件数。1〜100。ドキュメントの既定は 5件 |
overrideSearchType |
HYBRID(ベクトル+全文)か SEMANTIC(ベクトルのみ)。指定しないと Bedrock が決める |
filter |
メタデータで絞り込む |
rerankingConfiguration |
リランク(並べ替え)モデルで並べ直す |
implicitFilterConfiguration |
質問文からモデルに絞り込み条件を作らせる |
nextToken |
続きを取る(ページネーター対応) |
応答の形
{
"retrievalResults": [
{
"content": {"type": "TEXT", "text": "有給休暇は勤怠システムから3日前までに申請します。"},
"location": {"type": "S3", "s3Location": {"uri": "s3://rjc-docs-bucket/manuals/hr.pdf"}},
"score": 0.71,
"metadata": {"x-amz-bedrock-kb-source-uri": "s3://rjc-docs-bucket/manuals/hr.pdf", "department": "hr"},
}
],
"guardrailAction": "NONE", # ガードレールを付けたとき INTERVENED / NONE
"nextToken": "…",
}
content.type は TEXT・IMAGE・ROW・AUDIO・VIDEO、location.type は S3・WEB・CONFLUENCE・SHAREPOINT・SQL など10種類が定義されていました。
メタデータで絞り込む filter の一覧
S3 の文書と同じフォルダに ファイル名.拡張子.metadata.json(10KB まで)を置くと、そのキーで絞り込めます(S3 コネクタのドキュメントの方法)。
{
"metadataAttributes": {
"department": {"value": {"type": "STRING", "stringValue": "hr"}, "includeForEmbedding": false},
"year": {"value": {"type": "NUMBER", "numberValue": 2026}, "includeForEmbedding": false}
}
}
| 演算子 | 意味 | 使える型(ドキュメント) |
|---|---|---|
equals / notEquals |
等しい / 等しくない | 文字列・数値・真偽値 |
greaterThan / greaterThanOrEquals |
より大きい / 以上 | 数値 |
lessThan / lessThanOrEquals |
より小さい / 以下 | 数値 |
in / notIn |
含まれる / 含まれない | 文字列のリスト |
stringContains |
文字列を含む | 文字列 |
listContains |
リストに含む | 文字列 |
startsWith |
前方一致 | OpenSearch Serverless のみ |
andAll / orAll |
すべて満たす / どれかを満たす | 1グループに5つまで |
"filter": {"andAll": [
{"equals": {"key": "department", "value": "hr"}},
{"greaterThanOrEquals": {"key": "year", "value": 2025}},
]}
④b retrieve_and_generate:検索して答えを作る
MODEL_ARN = "<回答に使うモデルの ARN(基盤モデルか推論プロファイル)>"
res = rt.retrieve_and_generate(
input={"text": "有給休暇の申請方法は?"},
retrieveAndGenerateConfiguration={
"type": "KNOWLEDGE_BASE",
"knowledgeBaseConfiguration": {
"knowledgeBaseId": kb_id,
"modelArn": MODEL_ARN,
"retrievalConfiguration": {"vectorSearchConfiguration": {"numberOfResults": 5}},
"generationConfiguration": {
"promptTemplate": {
"textPromptTemplate": "次の検索結果だけを使って答えてください。\n$search_results$\n質問: $query$"
}
},
},
},
)
print(res["output"]["text"])
for c in res["citations"]:
for ref in c["retrievedReferences"]:
print(ref["location"]["s3Location"]["uri"])
# 続けて質問するときは sessionId を渡す
res2 = rt.retrieve_and_generate(sessionId=res["sessionId"], input={"text": "何日前まで?"},
retrieveAndGenerateConfiguration={...})
応答の形
{
"sessionId": "sess-1",
"output": {"text": "勤怠システムから3日前までに申請します。"},
"citations": [
{
"generatedResponsePart": {"textResponsePart": {"text": "…", "span": {"start": 0, "end": 20}}},
"retrievedReferences": [
{"content": {"text": "…"}, "location": {"type": "S3", "s3Location": {"uri": "s3://…/hr.pdf"}}}
],
}
],
"guardrailAction": "NONE",
}
citations は、答えのどの部分(span)が、どの文書(retrievedReferences)に基づくかの対応です。 画面で出典を表示するときに使います。
| generationConfiguration の項目 | 内容 |
|---|---|
promptTemplate.textPromptTemplate |
回答を作るときのプロンプト |
inferenceConfig |
最大トークン数・温度など |
guardrailConfiguration |
Bedrock Guardrails |
additionalModelRequestFields |
モデル固有のパラメーター |
performanceConfig |
レイテンシー最適化の設定 |
プロンプトテンプレートで使える置き換え文字(ドキュメント)です。
| 置き換え文字 | 入るもの |
|---|---|
$search_results$ |
検索結果(生成用のテンプレートで必須) |
$query$ |
利用者の質問 |
$output_format_instructions$ |
引用の書式の指示。消すと応答に引用が入らない |
$current_time$ |
現在時刻 |
retrieve と retrieve_and_generate の使い分け
| retrieve | retrieve_and_generate | |
|---|---|---|
| 返すもの | チャンクとスコア | 答えの文章と引用 |
| モデルの指定 | 要らない | modelArn が必須 |
| プロンプトの自由度 | 自分で組み立てる(Converse API などに渡す) | テンプレートで調整 |
| 会話の続き | 自分で管理 | sessionId |
retrieve の結果を自分で Converse API に渡す方法は、関連記事「Bedrock Python入門|Converse APIでClaudeを呼ぶ」で扱っています。RAG を自前で組む場合との違いは、関連記事「RAGの作り方|Pythonで動かす最小構成と精度の上げ方」で扱っています。
送る前に止まるエラー(ParamValidationError)
boto3 は、送る前にサービス定義で引数を検査します。Stubber で確かめたエラー文です。
| 渡した値 | エラー文 |
|---|---|
numberOfResults: 0 |
Invalid value for parameter retrievalConfiguration.vectorSearchConfiguration.numberOfResults, value: 0, valid min value: 1 |
retrievalQuery="q"(文字列) |
Invalid type for parameter retrievalQuery, value: q, type: <class 'str'>, valid types: <class 'dict'> |
modelArn を書かない |
Missing required parameter in retrieveAndGenerateConfiguration.knowledgeBaseConfiguration: "modelArn" |
overlapPercentage: 0 |
Invalid value for parameter …fixedSizeChunkingConfiguration.overlapPercentage, value: 0, valid min value: 1 |
chunkingStrategy: "FIXED"(無い値) |
送る前には止まらなかった(AWS 側で検証される) |
最小値と型と必須は手元で止まりますが、列挙値(enum)の間違いはそのまま AWS に送られました。 AWS 側のエラー(ValidationException など)は ClientError で受け取ります。扱い方は、関連記事「boto3のエラーハンドリング|ClientErrorのコード取得とリトライ設定」で扱っています。
料金の考え方
ナレッジベース(VECTOR 型)は、使った部品ごとに料金がかかります。 料金ページ(Amazon Bedrock pricing)の記載からまとめました。
| かかるもの | どこで決まるか |
|---|---|
| 取り込み時のエンベディング | エンベディングモデルの料金(入力トークン数) |
| 検索時の質問のエンベディング | 同上 |
| ベクトルストア | S3 Vectors・OpenSearch Serverless・Aurora など、各サービスの料金 |
| retrieve_and_generate の回答 | 回答に使うモデルの料金(入力・出力トークン) |
| リランク | リクエスト(クエリ)ごと。100チャンクを超えると複数クエリとして数える。Cohere Rerank 3.5 は 1,000 クエリあたり 2.00 ドル |
| SEMANTIC チャンキング・FM パース | 使う基盤モデルの料金 |
| SQL 型の SQL 生成 | 生成リクエストごと |
マネージド型(MANAGED)は、料金ページに次の単価が載っていました。
| 項目 | 料金 |
|---|---|
| インデックスの保存 | 元データ 1GB あたり月 5.00 ドル |
| 標準の検索 | 1,000 API 呼び出しあたり 1.00 ドル |
| エージェント型の検索 | 1,000 回あたり 4.00 ドル + 内部の Retrieve 1,000 回あたり 1.00 ドル |
| パース・エンベディング生成・マネージドのリランク | 0 ドル |
試したあとは、ナレッジベースとは別に、自分で作ったベクトルストア(OpenSearch Serverless のコレクションなど)も消したかを確かめます。
よくある質問
Q. 対応しているファイル形式は? A. ドキュメントでは、.txt・.md・.html・.doc/.docx・.csv・.xls/.xlsx・.pdf が挙げられ、1ファイル 50MB が上限(クォータ)です。
Q. 日本語の文書でも使えますか。 A. 多言語に対応したエンベディングモデル(Titan Text Embeddings V2・Cohere Embed Multilingual など)を選びます。ドキュメントの次元数の表では、Titan V2 は 1,024・512・256、Cohere Embed Multilingual は 1,024 です。
Q. LangChain や LlamaIndex から使えますか。 A. どちらにも Bedrock のナレッジベースを検索するための部品(Retriever)があります。LlamaIndex の使い方は、関連記事「LlamaIndex入門|PythonでRAGを作るコピペ集」で扱っています。
まとめ
- 作る・同期は
bedrock-agent、検索はbedrock-agent-runtime。手順は KB → データソース → 取り込み → 検索 - ベクトルストアは 8種類。S3 Vectors は浮動小数のみ・メタデータ 1KB、ハイブリッド検索は RDS・OpenSearch Serverless・MongoDB
- チャンキングは 既定約300トークン、
FIXED_SIZE・HIERARCHICAL・SEMANTIC・NONE。作成後は変えられない retrieveは チャンクとスコア、retrieve_and_generateは 答えと引用。件数の既定は 5件- boto3 は 最小値・型・必須を送る前に検査するが、enum の間違いは AWS 側で弾かれる
参考・出典
確認日はいずれも 2026年10月13日です。
- Amazon Bedrock ユーザーガイド「Retrieve data and generate AI responses with Amazon Bedrock Knowledge Bases」:https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html
- Amazon Bedrock ユーザーガイド「How content chunking works for knowledge bases」:https://docs.aws.amazon.com/bedrock/latest/userguide/kb-chunking.html
- Amazon Bedrock ユーザーガイド「Supported vector stores」:https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html
- Amazon Bedrock ユーザーガイド「Configure and customize queries and response generation」:https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html
- Amazon Bedrock ユーザーガイド「Create a service role for Amazon Bedrock Knowledge Bases」:https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html
- Amazon Bedrock ユーザーガイド「Create a managed knowledge base」:https://docs.aws.amazon.com/bedrock/latest/userguide/kb-managed-create.html
- Amazon Bedrock 料金:https://aws.amazon.com/bedrock/pricing/
- Boto3 ドキュメント「AgentsforBedrockRuntime」:https://docs.aws.amazon.com/boto3/latest/reference/services/bedrock-agent-runtime.html
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Bedrock Knowledge Basesの作り方|boto3でRAG構築」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。