TL;DR
KnowledgeForge는 해결된 ITSM incident ticket을 Amazon Bedrock으로 knowledge base article과 root cause analysis document로 만들고, 기존 문서까지 분류·중복 제거·품질 개선하는 AWS 기반 폐루프 pipeline입니다. 생성 단계는 Amazon ECS on AWS Fargate에서 실행하며 고객별 Amazon S3 Vectors 인덱스의 유사 문서 5개를 RAG 문맥으로 재사용하고, curation 단계는 AWS Step Functions Distributed Map으로 문서 분류와 품질 처리를 병렬화합니다. 1,024차원 embedding과 cosine distance 0.05 기준으로 중복을 찾고, 개선 전후 점수 비교와 media placeholder 복원으로 자동 개선의 부작용을 줄입니다. Amazon S3 pointer, SQS FIFO, dead-letter queue, circuit breaker, Bedrock retry를 조합해 상태 크기·순서·실패·quota 문제를 처리하며, 최종 공개 여부는 ServiceNow의 knowledge manager가 승인합니다.
섹션별 상세

response = s3vectors.query_vectors(
vectorBucketName=VECTOR_BUCKET,
indexName=VECTOR_INDEX,
queryVector={"float32": embedding},
topK=TOP_K + 1, # +1 because the article can match itself
returnMetadata=True,
returnDistance=True,
filter={"$and": [
{"tenant_id": {"$eq": TENANT_ID}}, # per-customer isolation
{"status": {"$in": ["UNIQUE", "PENDING"]}}, # ignore retired articles
]},
)
matches = [v for v in response.get("vectors", []) if v["key"] != article_id]고객별 Amazon S3 Vectors 인덱스에서 의미가 가까운 활성 문서를 조회해 중복 후보를 찾습니다.

"Phase1_ClassifyEmbed": {
"Type": "Map",
"ItemProcessor": {
"ProcessorConfig": {
"Mode": "DISTRIBUTED",
"ExecutionType": "STANDARD"
}
},
"ItemReader": {
"Resource": "arn:aws:states:::s3:getObject",
"ReaderConfig": {
"InputType": "JSON"
},
"Parameters": {
"Bucket.$": "$.bucket",
"Key.$": "$.manifest_key"
}
},
"MaxConcurrency": 40,
"ToleratedFailurePercentage": 10
}Amazon S3 manifest를 읽는 STANDARD Distributed Map으로 최대 40개 항목을 병렬 처리하고 일부 실패를 허용합니다.
# Before improvement: swap media/links for [IMG_N] / [LINK_N] tokens
html_with_placeholders, placeholder_map = extract_placeholders(article_html)
enriched = improve_with_bedrock(html_with_placeholders)
# model never sees raw markup
# After improvement: restore the exact original tags in place
restored_html, missing = restore_placeholders(enriched, placeholder_map)문서 개선 전에 이미지와 링크를 토큰으로 치환하고, 모델 처리 후 원래 태그를 그대로 복원합니다.
try:
return converse_with_timeout(kwargs, BEDROCK_CALL_TIMEOUT)
except ClientError as e:
if "ThrottlingException" in str(e) and guardrail_config:
log.warn("Guardrail throttled, retrying without guardrail")
del kwargs["guardrailConfig"]
return converse_with_timeout(kwargs, BEDROCK_CALL_TIMEOUT)
raiseAmazon Bedrock guardrail 호출이 throttling되면 경고를 기록하고 guardrail 없이 모델 호출을 재시도합니다.
용어 해설
- IT 서비스 관리(ITSM)
- — ITSM은 장애 티켓, 변경 요청, 문제 해결 기록처럼 IT 서비스 운영 과정에서 생성되는 업무를 관리하는 체계입니다. 이 글에서는 해결된 incident ticket에서 증상·원인·조치 정보를 추출해 지식 문서로 전환하고 기존 문서를 정비하는 데이터 원천으로 활용합니다.
- 검색 증강 생성(RAG)
- — RAG는 생성 전에 관련 문서를 검색해 모델 입력에 참고 문맥으로 넣는 방식입니다. KnowledgeForge는 고객별 Amazon S3 Vectors 인덱스에서 유사 문서 5개를 조회해 용어와 절차의 일관성을 높이고 근거 없는 절차 생성을 줄입니다.
- 벡터 임베딩(Vector Embedding)
- — 벡터 임베딩은 문서의 의미를 숫자 배열로 변환해 의미가 비슷한 문서끼리 가까운 위치에 놓이도록 만드는 표현입니다. KnowledgeForge는 Amazon Titan Text Embeddings V2로 각 문서를 1,024차원 벡터로 바꿔 중복 검색과 다음 생성 단계의 검색 문맥에 함께 사용합니다.
- 코사인 거리(Cosine Distance)
- — 코사인 거리는 두 벡터의 방향 차이로 의미적 유사도를 판단하는 지표입니다. 이 파이프라인은 거리 0.05 이하, 즉 유사도 0.95 이상인 기존 문서를 중복으로 간주하고 고객과 활성 상태 조건을 함께 적용합니다.
- 분산 Map(Distributed Map)
- — Distributed Map은 AWS Step Functions에서 대량 항목을 여러 실행 단위로 나누어 병렬 처리하는 상태 머신 패턴입니다. KnowledgeForge는 두 단계의 Distributed Map으로 문서 분류·임베딩과 중복 제거·품질 개선을 분리하고, 항목 처리에는 STANDARD 실행 유형을 사용합니다.
- 서킷 브레이커(Circuit Breaker)
- — Circuit Breaker는 연속 실패가 누적되면 새로운 작업 시작을 잠시 중단해 장애가 전체 처리 흐름으로 번지는 것을 막는 복원력 패턴입니다. KnowledgeForge의 dispatcher는 세 번 연속 실패한 뒤 새 batch 실행을 멈추고 영향받은 문서를 초기 상태로 되돌리지만, warm Lambda 메모리에 실패 횟수를 저장하므로 보장 기능이 아닌 최선 노력 방식으로 운용됩니다.
기술
- Amazon Bedrock
- Anthropic Claude Sonnet 4.5
- Amazon Titan Text Embeddings V2
- Amazon S3
- Amazon S3 Vectors
- Amazon ECS
- AWS Fargate
- Amazon SQS
- AWS Step Functions
- AWS Lambda
- Amazon EventBridge
- ServiceNow
- Amazon DynamoDB
- AWS KMS
- AWS CDK
활용 사례
- 해결된 ITSM incident ticket에서 knowledge base article과 root cause analysis document 생성
- 기존 knowledge base의 의미 기반 중복 문서 탐지와 오래된 문서 정리
- 품질 점수가 낮은 운영 문서의 자동 개선과 knowledge manager 승인
- 여러 고객의 문서를 분리 처리하는 대규모 생성형 AI document-processing pipeline
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.