OpenAI

OpenAI / text-embedding-3-small

O modelo de incorporação de texto mais económico da OpenAI com maior precisão e eficiência em comparação com text-embedding-ada-002 e text-embedding-3-large.

Introdução ao text-embedding-3-small

O text-embedding-3-small é o modelo de embedding de texto pequeno do OpenAI, criando embeddings com 1536 dimensões. Comparado com outros modelos de embedding de texto do OpenAI, como o text-embedding-ada-002 e o text-embedding-3-large, o text-embedding-3-small é o modelo mais económico com maior precisão e eficiência. É excelente para aplicações de pesquisa vetorial de uso geral.

Vamos dar uma olhada rápida em alguns conceitos básicos.

ModeloDimensõesMáximo de tokensModelo MIRACL avgMETB avgPreço
text-embedding-3-large3072819154.964.6$0.13 / 1M tokens
text-embedding-ada-0021536819131.461.0$0.10 / 1M tokens
text-embedding-3-small1536819144.062.3$0.02 / 1M tokens

Como gerar embeddings vetoriais com text-embedding-3-small

Há duas maneiras principais de criar embeddings vetoriais:

  • PyMilvus: o SDK Python para Milvus que integra perfeitamente o modelo text-embedding-3-small.
  • OpenAI Embedding: o SDK Python oferecido pela OpenAI.

Uma vez gerados os embeddings vectoriais, estes podem ser armazenados no Zilliz Cloud (um serviço de base de dados vetorial totalmente gerido pela Milvus) e utilizados para pesquisa de semelhanças semânticas. Eis quatro passos fundamentais:

  1. Inscreva-se para obter uma conta Zilliz Cloud gratuitamente.
  2. Configurar um cluster sem servidor e obter o Ponto de extremidade público e chave de API.
  3. Crie uma coleção de vectores e insira os seus embeddings vectoriais.
  4. Execute uma pesquisa semântica nos embeddings armazenados.

Gerar embeddings vectoriais através do PyMilvus e inseri-los no Zilliz Cloud para pesquisa semântica

from pymilvus import model, MilvusClient

OPENAI_API_KEY = "your-openai-api-key"
ef = model.dense.OpenAIEmbeddingFunction(
   nome_do_modelo="text-embedding-3-small",
   api_key=OPENAI_API_KEY,
   )

# Gerar embeddings para documentos
docs = [
   "A inteligência artificial foi fundada como disciplina académica em 1956",
   "Alan Turing foi a primeira pessoa a efetuar investigação substancial em IA.",
   "Nascido em Maida Vale, Londres, Turing foi criado no sul de Inglaterra."
]

docs_embeddings = ef.encode_documents(docs)

# Gerar embeddings para consultas
consultas = ["Quando foi fundada a inteligência artificial",
          "Onde nasceu Alan Turing?"]

consultas_embeddings = ef.encode_queries(queries)

# Ligar ao Zilliz Cloud com o ponto de extremidade público e a chave da API
cliente = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents" (coleção)
if client.has_collection(nome_da_colecção=COLLECTION):
    client.drop_collection(nome_da_colecção=COLLECTION)
client.create_collection(
    nome_da_colecção=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vetor": embedding})
    
resultados = cliente.search(
    nome_da_colecção=COLLECTION,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Para mais informações, consulte a nossa PyMilvus Embedding Model documentation.

Gerar embeddings através do SDK Python da OpenAI e inseri-los no Zilliz Cloud para pesquisa semântica

from openai import OpenAI
from pymilvus import MilvusClient

OPENAI_API_KEY = "your-openai-api-key"
cliente = OpenAI(api_key=OPENAI_API_KEY)
# Gerar embeddings para documentos
doc_response = client.embeddings.create(
   input=[
   "A inteligência artificial foi fundada como disciplina académica em 1956",
   "Alan Turing foi a primeira pessoa a efetuar investigação substancial em IA",
   "Nascido em Maida Vale, Londres, Turing foi criado no sul de Inglaterra."
   ],
   model="text-embedding-3-small"
   )
doc_embeddings = [data.embedding for data in doc_response.data]

# Gerar embeddings para consultas
query_response = client.embeddings.create(
   input=["Quando foi fundada a inteligência artificial",
          "Onde nasceu Alan Turing?"],
   model="text-embedding-3-small"
   )
dados_da_consulta = [dados.incorporados para dados em dados_da_consulta]

# Ligar ao Zilliz Cloud com o ponto final público e a chave API
cliente = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents" (coleção)
if client.has_collection(nome_da_colecção=COLLECTION):
    client.drop_collection(nome_da_colecção=COLLECTION)
client.create_collection(
    nome_da_colecção=COLLECTION,
    dimension=1536,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vetor": embedding})
    
resultados = cliente.search(
    nome_da_colecção=COLLECTION,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Para mais informações, consulte OpenAI's Embedding Guide.