Repositório de vetores no Azure Cosmos DB para MongoDB vCore
APLICA-SE A: MongoDB vCore
Use o Banco de Dados Vetorial Integrado no Azure Cosmos DB para MongoDB vCore para conectar perfeitamente seus aplicativos baseados em IA com seus dados armazenados no Azure Cosmos DB. Essa integração pode incluir aplicativos que você criou usando incorporações do Azure OpenAI. O banco de dados vetorial integrado nativamente permite armazenar, indexar e consultar com eficiência dados vetoriais de alta dimensão armazenados diretamente no Azure Cosmos DB para MongoDB vCore, juntamente com os dados originais a partir dos quais os dados vetoriais são criados. Ele elimina a necessidade de transferir seus dados para repositórios vetoriais alternativos e incorrer em custos adicionais.
O que é um repositório vetorial?
Um repositório vetorial ou banco de dados vetorial é um banco de dados projetado para armazenar e gerenciar incorporações vetoriais, que são representações matemáticas de dados em um espaço de alta dimensão. Neste espaço, cada dimensão corresponde a uma característica dos dados, e dezenas de milhares de dimensões podem ser usadas para representar dados sofisticados. A posição de um vetor neste espaço representa suas características. Palavras, frases ou documentos inteiros, imagens, áudio e outros tipos de dados podem ser vetorizados.
Como funciona uma loja vetorial?
Em um repositório vetorial, algoritmos de pesquisa vetorial são usados para indexar e consultar incorporações. Alguns algoritmos de pesquisa vetorial bem conhecidos incluem Hierarchical Navigable Small World (HNSW), Inverted File (IVF), DiskANN, etc. A pesquisa vetorial é um método que ajuda você a encontrar itens semelhantes com base em suas características de dados, em vez de correspondências exatas em um campo de propriedade. Esta técnica é útil em aplicações como procurar texto semelhante, encontrar imagens relacionadas, fazer recomendações ou até mesmo detetar anomalias. Ele é usado para consultar as incorporações vetoriais (listas de números) de seus dados que você criou usando um modelo de aprendizado de máquina usando uma API de incorporações. Exemplos de APIs de incorporação são Azure OpenAI Embeddings ou Hugging Face on Azure. A pesquisa vetorial mede a distância entre os vetores de dados e o vetor de consulta. Os vetores de dados mais próximos do vetor de consulta são os mais semelhantes semanticamente.
No Banco de Dados Vetorial Integrado no Azure Cosmos DB para MongoDB vCore, as incorporações podem ser armazenadas, indexadas e consultadas junto com os dados originais. Essa abordagem elimina o custo extra de replicar dados em um banco de dados vetorial puro separado. Além disso, essa arquitetura mantém as incorporações vetoriais e os dados originais juntos, o que facilita melhor as operações de dados multimodais e permite maior consistência, escala e desempenho dos dados.
Criar um índice de vetores
Para realizar a pesquisa de similiaridade vetorial sobre propriedades vetoriais em seus documentos, você terá que primeiro criar um índice vetorial.
Criar um índice vetorial usando HNSW
Você pode criar índices (Mundo Pequeno Navegável Hierárquico) em camadas de cluster M40 e superiores. Para criar o índice HSNW, você precisa criar um índice vetorial com o "kind"
parâmetro definido para "vector-hnsw"
seguir o modelo abaixo:
{
"createIndexes": "<collection_name>",
"indexes": [
{
"name": "<index_name>",
"key": {
"<path_to_property>": "cosmosSearch"
},
"cosmosSearchOptions": {
"kind": "vector-hnsw",
"m": <integer_value>,
"efConstruction": <integer_value>,
"similarity": "<string_value>",
"dimensions": <integer_value>
}
}
]
}
Campo | Tipo | Description |
---|---|---|
index_name |
string | Nome exclusivo do índice. |
path_to_property |
string | Caminho para a propriedade que contém o vetor. Esse caminho pode ser uma propriedade de nível superior ou um caminho de notação de ponto para a propriedade. Se um caminho de notação de ponto for usado, todos os elementos não folha não poderão ser matrizes. Os vetores devem ser indexados number[] e retornar nos resultados da pesquisa vetorial. |
kind |
string | Tipo de índice vetorial a ser criado. As opções são vector-ivf e vector-hnsw . A nota vector-ivf está disponível em todas as camadas de cluster e vector-hnsw está disponível nas camadas de cluster M40 e superiores. |
m |
integer | O número máximo de conexões por camada (16 por padrão, o valor mínimo é 2 , o valor máximo é 100 ). M mais alto é adequado para conjuntos de dados com alta dimensionalidade e/ou requisitos de alta precisão. |
efConstruction |
integer | o tamanho da lista dinâmica de candidatos para a construção do gráfico (64 por padrão, o valor mínimo é 4 , o valor máximo é 1000 ). Maior efConstruction resultará em melhor qualidade do índice e maior precisão, mas também aumentará o tempo necessário para construir o índice. efConstruction tem de ser, pelo menos, 2 * m |
similarity |
string | Métrica de similaridade a ser usada com o índice. As opções possíveis são COS (distância cosseno), L2 (distância euclidiana) e IP (produto interno). |
dimensions |
integer | Número de dimensões para semelhança vetorial. O número máximo de dimensões suportadas é 2000 . |
Realizar uma pesquisa vetorial com HNSW
Para executar uma pesquisa vetorial, use o pipeline de $search
agregação para o estágio da consulta com o cosmosSearch
operador.
{
"$search": {
"cosmosSearch": {
"vector": <query_vector>,
"path": "<path_to_property>",
"k": <num_results_to_return>,
"efSearch": <integer_value>
},
}
}
}
Campo | Tipo | Description |
---|---|---|
efSearch |
integer | O tamanho da lista dinâmica de candidatos para pesquisa (40 por padrão). Um valor mais elevado proporciona uma melhor recolha à custa da velocidade. |
k |
integer | O número de resultados a retornar. deve ser inferior ou igual a efSearch |
Nota
Criar um índice HSNW com grandes conjuntos de dados pode resultar em seu recurso vCore do Azure Cosmos DB para MongoDB ficando sem memória ou pode limitar o desempenho de outras operações em execução em seu banco de dados. Se você encontrar esses problemas, eles podem ser atenuados dimensionando seu recurso para uma camada de cluster mais alta ou reduzindo o tamanho do conjunto de dados.
Criar um índice vetorial usando FIV
Para criar um índice vetorial usando o algoritmo IVF (arquivo invertido), use o seguinte createIndexes
modelo e defina o "kind"
paramter como "vector-ivf"
:
{
"createIndexes": "<collection_name>",
"indexes": [
{
"name": "<index_name>",
"key": {
"<path_to_property>": "cosmosSearch"
},
"cosmosSearchOptions": {
"kind": "vector-ivf",
"numLists": <integer_value>,
"similarity": "<string_value>",
"dimensions": <integer_value>
}
}
]
}
Campo | Tipo | Description |
---|---|---|
index_name |
string | Nome exclusivo do índice. |
path_to_property |
string | Caminho para a propriedade que contém o vetor. Esse caminho pode ser uma propriedade de nível superior ou um caminho de notação de ponto para a propriedade. Se um caminho de notação de ponto for usado, todos os elementos não folha não poderão ser matrizes. Os vetores devem ser indexados number[] e retornar nos resultados da pesquisa vetorial. |
kind |
string | Tipo de índice vetorial a ser criado. As opções são vector-ivf e vector-hnsw . A nota vector-ivf está disponível em todas as camadas de cluster e vector-hnsw está disponível nas camadas de cluster M40 e superiores. |
numLists |
integer | Esse inteiro é o número de clusters que o índice de arquivo invertido (FIV) usa para agrupar os dados vetoriais. Recomendamos que numLists esteja configurado para documentCount/1000 até 1 milhão de documentos e para sqrt(documentCount) mais de 1 milhão de documentos. Usar um valor de é semelhante a executar a numLists pesquisa de 1 força bruta, que tem desempenho limitado. |
similarity |
string | Métrica de similaridade a ser usada com o índice. As opções possíveis são COS (distância cosseno), L2 (distância euclidiana) e IP (produto interno). |
dimensions |
integer | Número de dimensões para semelhança vetorial. O número máximo de dimensões suportadas é 2000 . |
Importante
Definir o parâmetro numLists corretamente é importante para obter uma boa precisão e desempenho. Recomendamos que numLists
esteja configurado para documentCount/1000
até 1 milhão de documentos e para sqrt(documentCount)
mais de 1 milhão de documentos.
À medida que o número de itens em seu banco de dados cresce, você deve ajustar numLists para ser maior, a fim de obter um bom desempenho de latência para pesquisa vetorial.
Se você estiver experimentando um novo cenário ou criando uma pequena demonstração, poderá começar com numLists
set to 1
para executar uma pesquisa de força bruta em todos os vetores. Isso deve fornecer os resultados mais precisos da pesquisa vetorial, no entanto, esteja ciente de que a velocidade e a latência da pesquisa serão lentas. Após a configuração inicial, você deve ir em frente e ajustar o numLists
parâmetro usando as orientações acima.
Realizar uma pesquisa vetorial com FIV
Para executar uma pesquisa vetorial, use o estágio de $search
pipeline de agregação em uma consulta do MongoDB. Para usar o cosmosSearch
índice, use o novo cosmosSearch
operador.
{
{
"$search": {
"cosmosSearch": {
"vector": <query_vector>,
"path": "<path_to_property>",
"k": <num_results_to_return>,
},
"returnStoredSource": True }},
{
"$project": { "<custom_name_for_similarity_score>": {
"$meta": "searchScore" },
"document" : "$$ROOT"
}
}
}
Para recuperar a pontuação de semelhança (searchScore
) juntamente com os documentos encontrados pela pesquisa vetorial, use o $project
operador para incluí-la searchScore
e renomeá-la como <custom_name_for_similarity_score>
nos resultados. Em seguida, o documento também é projetado como objeto aninhado. Observe que o escore de similaridade é calculado usando a métrica definida no índice vetorial.
Importante
Os vetores devem ser indexados number[]
. O uso de outro tipo, como double[]
, impede que o documento seja indexado. Documentos não indexados não serão retornados no resultado de uma pesquisa vetorial.
Exemplo usando um índice HNSW.
Os exemplos a seguir mostram como indexar vetores, adicionar documentos com propriedades vetoriais, executar uma pesquisa vetorial e recuperar a configuração de índice.
use test;
db.createCollection("exampleCollection");
db.runCommand({
"createIndexes": "exampleCollection",
"indexes": [
{
"name": "VectorSearchIndex",
"key": {
"contentVector": "cosmosSearch"
},
"cosmosSearchOptions": {
"kind": "vector-hnsw",
"m": 16,
"efConstruction": 64,
"similarity": "COS",
"dimensions": 3
}
}
]
});
Este comando cria um índice HNSW em relação à contentVector
propriedade nos documentos armazenados na coleção especificada, exampleCollection
. A cosmosSearchOptions
propriedade especifica os parâmetros para o índice vetorial HNSW. Se o documento tiver o vetor armazenado em uma propriedade aninhada, você poderá definir essa propriedade usando um caminho de notação de ponto. Por exemplo, você pode usar text.contentVector
if contentVector
é uma subpropriedade de text
.
Adicionar vetores ao seu banco de dados
Para adicionar vetores à coleção do seu banco de dados, primeiro você precisa criar as incorporações usando seu próprio modelo, Azure OpenAI Embeddings ou outra API (como o Hugging Face no Azure). Neste exemplo, novos documentos são adicionados por meio de incorporações de exemplo:
db.exampleCollection.insertMany([
{name: "Eugenia Lopez", bio: "Eugenia is the CEO of AdvenureWorks.", vectorContent: [0.51, 0.12, 0.23]},
{name: "Cameron Baker", bio: "Cameron Baker CFO of AdvenureWorks.", vectorContent: [0.55, 0.89, 0.44]},
{name: "Jessie Irwin", bio: "Jessie Irwin is the former CEO of AdventureWorks and now the director of the Our Planet initiative.", vectorContent: [0.13, 0.92, 0.85]},
{name: "Rory Nguyen", bio: "Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.", vectorContent: [0.91, 0.76, 0.83]},
]);
Realizar uma pesquisa vetorial
Continuando com o último exemplo, crie outro vetor, queryVector
. A pesquisa vetorial mede a distância entre queryVector
e os vetores no contentVector
caminho dos seus documentos. Você pode definir o número de resultados que a pesquisa retorna definindo o parâmetro k
, que é definido como 2
aqui. Você também pode definir efSearch
, que é um inteiro que controla o tamanho da lista de vetores candidatos. Um valor mais alto pode melhorar a precisão, no entanto, a pesquisa será mais lenta como resultado. Este é um parâmetro opcional com um valor padrão de 40.
const queryVector = [0.52, 0.28, 0.12];
db.exampleCollection.aggregate([
{
"$search": {
"cosmosSearch": {
"vector": "queryVector",
"path": "contentVector",
"k": 2,
"efSearch": 40
},
}
}
}
]);
Neste exemplo, uma pesquisa vetorial é realizada usando queryVector
como entrada através do shell Mongo. O resultado da pesquisa é uma lista de dois itens que são mais semelhantes ao vetor de consulta, classificados por suas pontuações de semelhança.
[
{
similarityScore: 0.9465376,
document: {
_id: ObjectId("645acb54413be5502badff94"),
name: 'Eugenia Lopez',
bio: 'Eugenia is the CEO of AdvenureWorks.',
vectorContent: [ 0.51, 0.12, 0.23 ]
}
},
{
similarityScore: 0.9006955,
document: {
_id: ObjectId("645acb54413be5502badff97"),
name: 'Rory Nguyen',
bio: 'Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.',
vectorContent: [ 0.91, 0.76, 0.83 ]
}
}
]
Obter definições de índice vetorial
Para recuperar sua definição de índice de vetor da coleção, use o listIndexes
comando:
db.exampleCollection.getIndexes();
Neste exemplo, vectorIndex
é retornado com todos os cosmosSearch
parâmetros que foram usados para criar o índice:
[
{ v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.exampleCollection' },
{
v: 2,
key: { contentVector: 'cosmosSearch' },
name: 'vectorSearchIndex',
cosmosSearch: {
kind: 'vector-hnsw',
m: 40,
efConstruction: 64,
similarity: 'COS',
dimensions: 3
},
ns: 'test.exampleCollection'
}
]
Exemplo usando um índice de FIV
A indexação de arquivo invertido (FIV) é um método que organiza vetores em clusters. Durante uma pesquisa vetorial, o vetor de consulta é primeiro comparado com os centros desses clusters. A pesquisa é então conduzida dentro do cluster cujo centro está mais próximo do vetor de consulta.
O numList
parâmetro s determina o número de clusters a serem criados. Um único cluster implica que a pesquisa é conduzida contra todos os vetores no banco de dados, semelhante a uma pesquisa de força bruta ou kNN. Essa configuração fornece a maior precisão, mas também a maior latência.
Aumentar o numLists
valor resulta em mais clusters, cada um contendo menos vetores. Por exemplo, se numLists=2
, cada cluster contém mais vetores do que se numLists=3
, e assim por diante. Menos vetores por cluster aceleram a pesquisa (menor latência, maiores consultas por segundo). No entanto, isso aumenta a probabilidade de perder o vetor mais semelhante em seu banco de dados ao vetor de consulta. Isso se deve à natureza imperfeita do clustering, onde a pesquisa pode se concentrar em um cluster enquanto o vetor "mais próximo" reside em um cluster diferente.
O nProbes
parâmetro controla o número de clusters a serem pesquisados. Por padrão, ele é definido como 1, o que significa que pesquisa apenas o cluster com o centro mais próximo do vetor de consulta. Aumentar esse valor permite que a pesquisa cubra mais clusters, melhorando a precisão, mas também aumentando a latência (diminuindo assim as consultas por segundo) à medida que mais clusters e vetores estão sendo pesquisados.
Os exemplos a seguir mostram como indexar vetores, adicionar documentos com propriedades vetoriais, executar uma pesquisa vetorial e recuperar a configuração de índice.
Criar um índice de vetores
use test;
db.createCollection("exampleCollection");
db.runCommand({
createIndexes: 'exampleCollection',
indexes: [
{
name: 'vectorSearchIndex',
key: {
"vectorContent": "cosmosSearch"
},
cosmosSearchOptions: {
kind: 'vector-ivf',
numLists: 3,
similarity: 'COS',
dimensions: 3
}
}
]
});
Este comando cria um vector-ivf
índice em relação à vectorContent
propriedade nos documentos armazenados na coleção especificada, exampleCollection
. A cosmosSearchOptions
propriedade especifica os parâmetros para o índice vetorial FIV. Se o documento tiver o vetor armazenado em uma propriedade aninhada, você poderá definir essa propriedade usando um caminho de notação de ponto. Por exemplo, você pode usar text.vectorContent
if vectorContent
é uma subpropriedade de text
.
Adicionar vetores ao seu banco de dados
Para adicionar vetores à coleção do seu banco de dados, primeiro você precisa criar as incorporações usando seu próprio modelo, Azure OpenAI Embeddings ou outra API (como o Hugging Face no Azure). Neste exemplo, novos documentos são adicionados por meio de incorporações de exemplo:
db.exampleCollection.insertMany([
{name: "Eugenia Lopez", bio: "Eugenia is the CEO of AdvenureWorks.", vectorContent: [0.51, 0.12, 0.23]},
{name: "Cameron Baker", bio: "Cameron Baker CFO of AdvenureWorks.", vectorContent: [0.55, 0.89, 0.44]},
{name: "Jessie Irwin", bio: "Jessie Irwin is the former CEO of AdventureWorks and now the director of the Our Planet initiative.", vectorContent: [0.13, 0.92, 0.85]},
{name: "Rory Nguyen", bio: "Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.", vectorContent: [0.91, 0.76, 0.83]},
]);
Realizar uma pesquisa vetorial
Para executar uma pesquisa vetorial, use o estágio de $search
pipeline de agregação em uma consulta do MongoDB. Para usar o cosmosSearch
índice, use o novo cosmosSearch
operador.
{
{
"$search": {
"cosmosSearch": {
"vector": <vector_to_search>,
"path": "<path_to_property>",
"k": <num_results_to_return>,
},
"returnStoredSource": True }},
{
"$project": { "<custom_name_for_similarity_score>": {
"$meta": "searchScore" },
"document" : "$$ROOT"
}
}
}
Para recuperar a pontuação de semelhança (searchScore
) juntamente com os documentos encontrados pela pesquisa vetorial, use o $project
operador para incluí-la searchScore
e renomeá-la como <custom_name_for_similarity_score>
nos resultados. Em seguida, o documento também é projetado como objeto aninhado. Observe que o escore de similaridade é calculado usando a métrica definida no índice vetorial.
Vetores de consulta e distâncias vetoriais (também conhecidas como pontuações de similaridade) usando $search"
Continuando com o último exemplo, crie outro vetor, queryVector
. A pesquisa vetorial mede a distância entre queryVector
e os vetores no vectorContent
caminho dos seus documentos. Você pode definir o número de resultados que a pesquisa retorna definindo o parâmetro k
, que é definido como 2
aqui. Você também pode definir nProbes
, que é um número inteiro que controla o número de clusters próximos que são inspecionados em cada pesquisa. Um valor mais alto pode melhorar a precisão, no entanto, a pesquisa será mais lenta como resultado. Este é um parâmetro opcional com um valor padrão de 1 e não pode ser maior do que o numLists
valor especificado no índice vetorial.
const queryVector = [0.52, 0.28, 0.12];
db.exampleCollection.aggregate([
{
$search: {
"cosmosSearch": {
"vector": queryVector,
"path": "vectorContent",
"k": 2
},
"returnStoredSource": true }},
{
"$project": { "similarityScore": {
"$meta": "searchScore" },
"document" : "$$ROOT"
}
}
]);
Neste exemplo, uma pesquisa vetorial é realizada usando queryVector
como entrada através do shell Mongo. O resultado da pesquisa é uma lista de dois itens que são mais semelhantes ao vetor de consulta, classificados por suas pontuações de semelhança.
[
{
similarityScore: 0.9465376,
document: {
_id: ObjectId("645acb54413be5502badff94"),
name: 'Eugenia Lopez',
bio: 'Eugenia is the CEO of AdvenureWorks.',
vectorContent: [ 0.51, 0.12, 0.23 ]
}
},
{
similarityScore: 0.9006955,
document: {
_id: ObjectId("645acb54413be5502badff97"),
name: 'Rory Nguyen',
bio: 'Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.',
vectorContent: [ 0.91, 0.76, 0.83 ]
}
}
]
Obter definições de índice vetorial
Para recuperar sua definição de índice de vetor da coleção, use o listIndexes
comando:
db.exampleCollection.getIndexes();
Neste exemplo, vectorIndex
é retornado com todos os cosmosSearch
parâmetros que foram usados para criar o índice:
[
{ v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.exampleCollection' },
{
v: 2,
key: { vectorContent: 'cosmosSearch' },
name: 'vectorSearchIndex',
cosmosSearch: {
kind: 'vector-ivf',
numLists: 3,
similarity: 'COS',
dimensions: 3
},
ns: 'test.exampleCollection'
}
]
Pesquisa vetorial filtrada (visualização)
Agora você pode executar pesquisas vetoriais com qualquer filtro de consulta suportado, como $lt
, $lte
, $eq
, $neq
, $gte
, $gt
$in
, $nin
, e $regex
. Habilite o recurso "pesquisa vetorial de filtragem" na guia "Recursos de visualização" da sua Assinatura do Azure. Saiba mais sobre as funcionalidades de pré-visualização aqui.
Primeiro, você precisará definir um índice para seu filtro, além de um índice vetorial. Por exemplo, você pode definir o índice de filtro em uma propriedade
db.runCommand({
"createIndexes": "<collection_name",
"indexes": [ {
"key": {
"<property_to_filter>": 1
},
"name": "<name_of_filter_index>"
}
]
});
Em seguida, você pode adicionar o "filter"
termo à sua pesquisa vetorial, conforme mostrado abaixo. Neste exemplo, o filtro está procurando documentos em que a "title"
propriedade não está na lista de ["not in this text", "or this text"]
.
db.exampleCollection.aggregate([
{
'$search': {
"cosmosSearch": {
"vector": "<query_vector>",
"path": <path_to_vector>,
"k": num_results,
"filter": {<property_to_filter>: {"$nin": ["not in this text", "or this text"]}}
},
"returnStoredSource": True }},
{'$project': { 'similarityScore': { '$meta': 'searchScore' }, 'document' : '$$ROOT' }
}
]);
Importante
Durante a visualização, a pesquisa vetorial filtrada pode exigir que você ajuste os parâmetros do índice vetorial para obter maior precisão. Por exemplo, aumentar m
, efConstruction
ou efSearch
ao usar HNSW, ou numLists
, ou nProbes
ao usar FIV, pode levar a melhores resultados. Você deve testar sua configuração antes de usar para garantir que os resultados sejam satisfatórios.
Usar ferramentas de orquestração LLM
Use como um banco de dados vetorial com Kernel Semântico
Use o Kernel Semântico para orquestrar sua recuperação de informações do Azure Cosmos DB para MongoDB vCore e seu LLM. Saiba mais aqui.
Use como um banco de dados vetorial com LangChain
Use o LangChain para orquestrar sua recuperação de informações do Azure Cosmos DB para MongoDB vCore e seu LLM. Saiba mais aqui.
Use como cache semântico com LangChain
Use o LangChain e o Azure Cosmos DB para MongoDB (vCore) para orquestrar o Cache Semântico, usando respones LLM anteriormente retificadas que podem economizar custos de API LLM e reduzir a latência das respostas. Saiba mais aqui
Funcionalidades e limitações
- Métricas de distância suportadas: L2 (Euclidiano), produto interno e cosseno.
- Métodos de indexação suportados: IVFFLAT (GA) e HSNW (visualização)
- Indexação de vetores de até 2.000 dimensões de tamanho.
- A indexação aplica-se a apenas um vetor por caminho.
- Apenas um índice pode ser criado por caminho vetorial.
Resumo
Este guia demonstra como criar um índice vetorial, adicionar documentos com dados vetoriais, realizar uma pesquisa de semelhança e recuperar a definição de índice. Usando nosso banco de dados vetorial integrado, você pode armazenar, indexar e consultar dados vetoriais de alta dimensão de forma eficiente diretamente no Azure Cosmos DB para MongoDB vCore. Ele permite que você libere todo o potencial de seus dados por meio de incorporações vetoriais e permite que você crie aplicativos mais precisos, eficientes e poderosos.
Conteúdos relacionados
- Solução de referência de varejo .NET RAG Pattern
- Tutorial .NET - chatbot de receita
- Padrão RAG C# - Integre serviços de IA aberta com o Cosmos
- Padrão Python RAG - Chatbot do produto Azure
- Python notebook tutorial - Integração de banco de dados vetorial através de LangChain
- Tutorial do notebook Python - Integração com LLM Caching através do LangChain
- Python - Integração LlamaIndex
- Python - Integração de memória do kernel semântico