Voyage AI

Voyage AI / voyage-code-2

코드 검색에 최적화된 Voyage AI의 텍스트 임베딩 모델(대체 모델 대비 17% 개선).

항해 코드 소개-2

'voyage-code-2'는 코드 검색에 최적화된 Voyage AI의 텍스트 임베딩 모델입니다(대체 모델보다 17% 더 우수).

Voyage AI의 다른 인기 임베딩 모델과 voyage-code-2를 비교:

모델컨텍스트 길이(토큰)임베딩 차원설명
항해-대형-2-인스트럭트160001024MTEB 리더보드 상단. 클러스터링, 분류, 검색에 최적화된 인스트럭션 튜닝된 범용 임베딩 모델입니다.
voyage-multilingual-2320001024다국어 검색 및 RAG에 최적화됨.
voyage-code-2160001536코드 검색에 최적화됨(대안보다 17% 더 좋음).
voyage-large-2160001536검색 품질에 최적화된 범용 임베딩 모델(예: OpenAI V3 Large보다 우수).
voyage-240001024비용, 지연 시간, 검색 품질 간의 균형을 맞추기 위해 최적화된 범용 임베딩 모델입니다.

voyage-code-2로 임베딩을 만드는 방법

벡터 임베딩을 만드는 방법에는 크게 두 가지가 있습니다:

  1. PyMilvus: voyage-code-2 모델을 원활하게 통합하는 Milvus용 Python SDK.
  2. Voyage AI 임베딩: Voyage AI에서 제공하는 Python SDK.

벡터 임베딩이 생성되면 질리즈 클라우드(밀버스에서 제공하는 완전 관리형 벡터 데이터베이스 서비스)에 저장하여 시맨틱 유사도 검색에 사용할 수 있습니다. 다음은 네 가지 주요 단계입니다:

  1. 질리즈 클라우드 계정을 무료로 가입합니다.
  2. 서버리스 클러스터 설정](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster) 및 퍼블릭 엔드포인트 및 API 키를 발급받습니다.
  3. 벡터 컬렉션을 생성하고 벡터 임베딩을 삽입합니다.
  4. 저장된 임베딩에 대해 시맨틱 검색을 실행합니다.

파이밀버스를 통해 벡터 임베딩을 생성하고 질리즈 클라우드에 삽입하여 시맨틱 검색을 진행합니다.

파이밀버스 가져오기 모델, MilvusClient에서

ef = model.dense.VoyageEmbeddingFunction(
   model_name="voyage-code-2",
   api_key="your-voyage-api-key",
   )

# 문서에 대한 임베딩 생성
docs = [
    "retriever = KNNRetriever.from_texts(문서, 임베딩)",
    "knn = KNeighborsClassifier(n_neighbors=3)",
    "sorted_numbers = sorted(numbers)",
    "def dynamic_programming(): print('yes')",
    "documents_embds = get_embeddings(documents)",
    "response = client.embeddings.create(입력 = 문서, 모델='text-embedding-ada-002')"
]

docs_embedings = ef.encode_documents(docs)

# 쿼리에 대한 임베딩 생성하기
queries = ["dynamic_programming() 함수가 동적 프로그래밍을 사용하여 구현되었나요?"]

쿼리 임베딩 = ef.encode_queries(쿼리)

# 퍼블릭 엔드포인트와 API 키로 질리츠 클라우드에 연결하기
client = 밀버스클라이언트(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

컬렉션 = "문서"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

문서의 경우 zip(docs, docs_embeddings)에 임베딩합니다:
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION,
    data = 쿼리_임베딩,
    일관성_레벨="강함",
    output_fields=["text"])

자세한 내용은 파이밀버스 임베딩 모델 문서를 참조하세요.

Voyage AI의 Python SDK를 통해 벡터 임베딩을 생성하고 시맨틱 검색을 위해 질리즈 클라우드에 삽입합니다.

import voyageAI
pymilvus에서 MilvusClient를 가져옵니다.

vo = voyageai.Client(api_key="your-voyage-api-key")

# 문서에 대한 임베딩 생성
docs = [
    "retriever = KNNRetriever.from_texts(문서, 임베딩)",
    "knn = KNeighborsClassifier(n_neighbors=3)",
    "sorted_numbers = sorted(numbers)",
    "def dynamic_programming(): print('yes')",
    "documents_embds = get_embeddings(documents)",
    "response = client.embeddings.create(입력 = 문서, 모델='text-embedding-ada-002')"
]

docs_embedings = vo.embed(docs, 모델="voyage-code-2", 입력 유형="문서").embedings

# 쿼리에 대한 임베딩 생성하기
queries = ["dynamic_programming() 함수가 동적 프로그래밍을 사용하여 구현되었나요?"]

쿼리_임베딩 = vo.embed(쿼리, 모델="항해 코드-2", 입력 유형="쿼리").임베딩

# 퍼블릭 엔드포인트와 API 키로 질리즈 클라우드에 연결하기
client = 밀버스클라이언트(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

컬렉션 = "문서"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION,
    dimension=1536,
    auto_id=True)

문서의 경우 zip(docs, docs_embeddings)에 임베딩합니다:
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION,
    data = 쿼리_임베딩,
    일관성_레벨="강함",
    output_fields=["text"])

자세한 내용은 Voyage AI 임베딩 가이드를 참조하세요.