임베딩 생성
임베딩은 텍스트를 의미적 의미를 담아내는 수치 벡터로 변환하여, AI 모델이 의미적으로 유사한 콘텐츠를 비교하고 검색할 수 있게 해줍니다. 임베딩을 통해 자체 지식 기반의 관련 맥락을 모델에 제공함으로써 채팅 자동 완성 응답을 개선하는 방법을 보여주는 튜토리얼은 “벡터 임베딩과 RAG를 활용한 채팅 자동 완성 개선”을 참조하세요. 사용 가능한 매개변수의 전체 목록을 보려면 OpenAI Create embeddings를 참조하십시오.
시작하기 전에
-
IBM Cloud 계정을 종량제 또는 구독형으로 생성하세요. 체험 계정은 지원되지 않습니다. 자세한 내용을 확인하거나 계정을 업그레이드하려면 ‘계정 유형’을 참조하세요.
-
Red Hat AI Inference 프로젝트를 생성합니다.
-
Red Hat AI Inference 서비스에서 ‘Writer’ 역할 이상을 보유하고 있는지 확인하십시오. 자세한 내용은 ‘IAM 액세스 관리’를 참조하십시오.
-
API 엔드포인트를 확인하세요. 모든 API 요청은 다음과 같은 기본 형식 URL 을 따릅니다:
https://us-east.rhai.ibm.com/v1/projects/<project_id>/inference<project_id>을 여러분의 프로젝트 ID로 바꾸세요. 이를 찾으려면 Red Hat AI Inference projects로 이동하여 해당 프로젝트를 열어보세요.
모델이 임베딩을 지원하는지 확인하려면, 모델 목록을 열거나 ID로 모델을 조회한 다음, supports_embeddings 가 true``로
설정되어 있는지 확인하십시오.
입력 형식 및 제한 사항
임베딩 API는 input 매개변수에 대해 다음 입력 형식을 지원합니다:
- 문자열
- 임베딩 벡터로 변환할 단일 텍스트 문자열.
- 문자열의 배열
- 텍스트 문자열로 구성된 배열로, 각 문자열은 별도의 임베딩 벡터로 변환됩니다.
- 숫자 배열
- 토큰을 나타내는 정수 배열로, 임베딩 벡터로 변환됩니다.
- 숫자로 구성된 배열의 배열
- 토큰 배열들의 배열로, 각 토큰 배열은 별도의 임베딩 벡터로 변환됩니다.
임베딩에 대한 입력 데이터를 제출할 때 다음 제한 사항 및 동작이 적용됩니다:
- 입력 토큰 제한
- 각 임베딩 모델은 컨텍스트 윈도우 크기에 따라 최대 입력 토큰 수를 정의합니다.
- 배열 입력 평가
- 여러 개의 입력으로 구성된 배열을 제출하는 경우, 입력 토큰 제한은 각 텍스트에 개별적으로 적용됩니다.
- 한도 초과
- 배열에 포함된 텍스트 입력 중 하나라도 모델의 토큰 제한을 초과할 경우, API는 전체 요청을 거부하고 ‘
HTTP 400 Bad Request’ 오류를 반환합니다.
출력 치수
임베딩 요청의 결과는 고차원 벡터입니다. 출력 벡터의 다음과 같은 특성을 고려해 보자:
- 표현의 질
- 출력 벡터의 크기가 클수록 더 세밀한 정보를 표현하고, 더 세분화된 의미적 내용을 포착할 수 있습니다. 그러나 벡터의 크기가 클수록 저장 및 검색에 더 많은 메모리가 필요하므로, 리소스 사용량이 증가할 수 있습니다.
- 벡터 크기 설정
- 출력 벡터의 크기는 모델에 따라 다릅니다. 임베딩 API는 출력 벡터 크기를 구성하기 위한
dimensions매개변수를 지원하지만, 이 매개변수는 선택한 모델이 차원 크기 구성과 호환되는 경우에만 사용됩니다.
임베딩 생성
임베딩 API를 사용하여 하나 이상의 텍스트 입력을 벡터 표현으로 변환합니다. 다음 예제는 cURL 또는 OpenAI Python 클라이언트를 사용하여 API로 임베딩을 생성하는 방법을 보여줍니다.
curl https://us-east.rhai.ibm.com/v1/projects/<project_id>/inference/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <bearer_token>" \
-d '{
"model": "granite-embedding-278m-multilingual",
"input": [
"Manage your projects from the IBM Cloud console.",
"Use the API to automate workflows and integrate AI into your applications.",
"IBM Cloud offers a range of AI and machine learning services for enterprise applications."
]
}'
from openai import OpenAI
client = OpenAI(
api_key="<bearer_token>",
base_url="https://us-east.rhai.ibm.com/v1/projects/<project_id>/inference",
)
response = client.embeddings.create(
model="granite-embedding-278m-multilingual",
input=[
"Manage your projects from the IBM Cloud console.",
"Use the API to automate workflows and integrate AI into your applications.",
"IBM Cloud offers a range of AI and machine learning services for enterprise applications."
]
)
print(response.data[0].embedding)