임베딩 모델을 사용하여 문장이나 구절의 의미를 포착하는 텍스트 임베딩을 만듭니다. 지원 벡터 머신과 같은 분류기와 함께 이러한 모델을 사용할 수 있습니다. 모델 내장은 검색 증강 생성 작업에도 도움이 될 수 있습니다.
다음 다이어그램은 임베딩 지원을 통한 검색 증강 생성 패턴을 보여줍니다.
임베딩 지원이 포함된 검색 증강 생성 패턴에는 다음 단계가 포함됩니다.
- 콘텐츠를 텍스트 임베딩으로 변환하고 벡터 데이터 저장소에 저장하세요.
- 동일한 임베딩 모델을 사용하여 사용자 입력을 텍스트 임베딩으로 변환합니다.
- 사용자의 질문과 관련된 콘텐츠에 대해 지식 베이스에서 유사성 또는 의미 검색을 실행하세요.
- 가장 관련성이 높은 검색 결과를 프롬프트에 컨텍스트로 가져오고 "다음 구절의 정보만 사용하여 다음 질문에 답하세요."와 같은 지침을 추가하세요.
- 결합된 프롬프트 텍스트(지시 사항 + 검색 결과 + 질문)를 foundation model 보냅니다.
- foundation model 프롬프트의 문맥 정보를 사용하여 사실에 입각한 답변을 생성합니다.
자세한 정보는 다음을 참조하십시오.
임베딩 사용
USE 임베딩은 래퍼입니다. Google TFHub에서 사용할 수 있는 Universal Sentence Encoder 임베딩입니다. 이러한 임베드는 문서 분류 SVM 알고리즘에 사용됩니다. 사전 학습된 USE 임베딩 및 지원되는 언어 목록은 포함된 사전 학습된 USE 임베딩을 참조하세요
USE 임베딩을 사용하는 경우 다음을 고려하십시오.
태스크에 영어 텍스트가 포함되는 경우
embedding_use_en_stock
을(를) 선택하십시오.태스크에 영어가 아닌 언어로 된 텍스트가 포함되어 있거나 다국어 모델을 훈련하려는 경우 다국어 USE 임베딩 중 하나를 선택하십시오.
USE 임베딩은 이하에서 설명되는 바와 같이, 훈련된 모델의 품질과 추론 시간에서의 처리량 사이의 상이한 트레이드오프(trade- off)를 나타냅니다. 다양한 임베딩을 시도하여 유스 케이스에 적합한 결과 품질과 추론 처리량 간의 트레이드오프를 결정하십시오.
embedding_use_multi_small
에는 타당한 품질이 있지만 추론 시간에는 빠른시간입니다.embedding_use_en_stock
은(는) 영어 전용 버전의embedding_embedding_use_multi_small
이므로 더 작고 더 높은 추론 처리량을 나타냅니다.embedding_use_multi_large
은(는) 변환기 아키텍처를 기반으로 하므로 추론 시간에 낮은 처리량으로 더 높은 품질의 결과를 제공합니다.
코드 샘플
import watson_nlp
syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_use_en_stock")
text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)
코드 샘플의 출력 :
{
"data": {
"data": [
-0.01909315399825573,
-0.009827353060245514,
...
0.008978910744190216,
-0.0702751949429512
],
"rows": 1,
"cols": 512,
"dtype": "float32"
},
"offsets": null,
"producer_id": null
}
사전 학습된 USE 임베딩 포함
다음 테이블에는 사용 가능한 USE 임베딩과 지원되는 언어에 대해 선행 학습된 블록이 나열되어 있습니다. 언어 코드 및 해당 언어 목록은 언어 코드를 참조하십시오.
블록 이름 | 모델 이름 | 지원되는 언어 |
---|---|---|
use |
embedding_use_en_stock |
영어만 |
use |
embedding_use_multi_small |
ar, de, el, en, es, fr, it, ja, ko, nb, nl, pl, pt, ru, th, tr, zh_tw, zh |
use |
embedding_use_multi_large |
ar, de, el, en, es, fr, it, ja, ko, nb, nl, pl, pt, ru, th, tr, zh_tw, zh |
GloVe 임베딩
GloVe 임베딩은 CNN 분류기에 사용됩니다.
블록 이름 :embedding_glove__stock
지원되는 언어 : ar, de, en, es, fr, it, ja, ko, nl, pt, zh-cn
코드 샘플
import watson_nlp
syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_glove_en_stock")
text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)
코드 샘플의 출력 :
{
"data": {
"data": [
-0.01909315399825573,
-0.009827353060245514,
...
0.008978910744190216,
-0.0702751949429512
],
"rows": 1,
"cols": 512,
"dtype": "float32"
},
"offsets": null,
"producer_id": null
}
변환기 임베딩
블록 이름.
embedding_transformer_en_slate.125m
embedding_transformer_en_slate.30m
지원되는 언어
영어만
코드 샘플
import watson_nlp
# embeddings_model = watson_nlp.load("embedding_transformer_en_slate.125m")
embeddings_model = watson_nlp.load("embedding_transformer_en_slate.30m")
text = "python"
embedding = embeddings_model.run(text)
print(embedding)
코드 샘플의 출력
{
"data": {
"data": [
-0.055536773055791855,
0.008286023512482643,
...
-0.3202415108680725,
5.000295277568512e-05
],
"rows": 1,
"cols": 384,
"dtype": "float32"
},
"offsets": null,
"producer_id": {
"name": "Transformer Embeddings",
"version": "0.0.1"
}
}
상위 주제: Watson 자연어 처리 작업 카탈로그