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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?