Cohere
Os modelos de incorporação do Cohere são utilizados para gerar incorporação de texto, que são listas de números de vírgula flutuante que captam informações semânticas sobre o texto. Estes embeddings podem ser utilizados em tarefas como a classificação de textos e a pesquisa semântica.
O Milvus integra-se com os modelos de incorporação do Cohere utilizando a classe CohereEmbeddingFunction
. Esta classe trata do cálculo dos embeddings e devolve-os num formato compatível com o Milvus para indexação e pesquisa.
Para utilizar esta funcionalidade, instale as dependências necessárias:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Em seguida, instancie a classe CohereEmbeddingFunction
:
from pymilvus.model.dense import CohereEmbeddingFunction
cohere_ef = CohereEmbeddingFunction(
model_name="embed-english-light-v3.0",
api_key="YOUR_COHERE_API_KEY",
input_type="search_document",
embedding_types=["float"]
)
Parâmetros:
model_name
(string)O nome do modelo de incorporação Cohere a utilizar para a codificação. Pode especificar qualquer um dos nomes de modelos de incorporação Cohere disponíveis, por exemplo,
embed-english-v3.0
,embed-multilingual-v3.0
, etc. Se este parâmetro não for especificado, será utilizadoembed-english-light-v3.0
. Para obter uma lista dos modelos disponíveis, consulte Incorporar.api_key
(cadeia de caracteres)A chave da API para acessar a API do Cohere.
input_type
(string)O tipo de entrada passado para o modelo. Necessário para modelos de incorporação v3 e superiores.
"search_document"
: Usado para embeddings armazenados em um banco de dados vetorial para casos de uso de pesquisa."search_query"
: Utilizado para incorporações de consultas de pesquisa executadas numa base de dados vetorial para encontrar documentos relevantes."classification"
: Utilizado para incorporações passadas através de um classificador de texto."clustering"
: Utilizado para as incorporações executadas através de um algoritmo de agrupamento.
embedding_types
(Lista[str])O tipo de incorporação que pretende obter. Não é necessário e a predefinição é Nenhum, que devolve o tipo de resposta Embed Floats. Atualmente, só é possível especificar um único valor para este parâmetro. Valores possíveis:
"float"
: Use isso quando quiser receber de volta as incorporações de flutuação padrão. Válido para todos os modelos."binary"
: Utilize esta opção quando pretender obter as incorporações binárias assinadas. Válido apenas para os modelos v3."ubinary"
: Utilize esta opção quando pretender obter embeddings binários não assinados. Válido apenas para os modelos v3.
Para criar embeddings para documentos, use o método encode_documents()
:
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
docs_embeddings = cohere_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", cohere_ef.dim, docs_embeddings[0].shape)
O resultado esperado é semelhante ao seguinte:
Embeddings: [array([ 3.43322754e-02, 1.16252899e-03, -5.25207520e-02, 1.32846832e-03,
-6.80541992e-02, 6.10961914e-02, -7.06176758e-02, 1.48925781e-01,
1.54174805e-01, 1.98516846e-02, 2.43835449e-02, 3.55224609e-02,
1.82952881e-02, 7.57446289e-02, -2.40783691e-02, 4.40063477e-02,
...
0.06359863, -0.01971436, -0.02253723, 0.00354195, 0.00222015,
0.00184727, 0.03408813, -0.00777817, 0.04919434, 0.01519775,
-0.02862549, 0.04760742, -0.07891846, 0.0124054 ], dtype=float32)]
Dim: 384 (384,)
Para criar embeddings para consultas, use o método encode_queries()
:
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = cohere_ef.encode_queries(queries)
print("Embeddings:", query_embeddings)
print("Dim", cohere_ef.dim, query_embeddings[0].shape)
A saída esperada é semelhante à seguinte:
Embeddings: [array([-1.33361816e-02, 9.79423523e-04, -7.28759766e-02, -1.93786621e-02,
-9.71679688e-02, 4.34875488e-02, -9.81445312e-02, 1.16882324e-01,
5.89904785e-02, -4.19921875e-02, 4.95910645e-02, 5.83496094e-02,
3.47595215e-02, -5.87463379e-03, -7.30514526e-03, 2.92816162e-02,
...
0.00749969, -0.01192474, 0.02719116, 0.03347778, 0.07696533,
0.01409149, 0.00964355, -0.01681519, -0.0073204 , 0.00043154,
-0.04577637, 0.03591919, -0.02807617, -0.04812622], dtype=float32)]
Dim 384 (384,)