Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

Comece a usar a integração de IA do MongoDB Fireworks

Você pode integrar o MongoDB à IA do Fireworks para criar aplicativos de geração aumentada de recuperação( RAG) em modelos de código aberto . Este tutorial usa a IA do Voyage para incorporar e reclassificar dados de amostra e, em seguida, usa um modelo de chat do Fireworks para gerar uma recomendações embasadas.

Neste tutorial, você executa as seguintes tarefas:

  1. Configure seu ambiente.

  2. Use um modelo de incorporação Voyage AI para incorporar dados de filme e armazenar as incorporações no MongoDB.

  3. Use o MongoDB Vector Search e um modelo de reclassificação Voyage AI para recuperar e reclassificar documentos de filme.

  4. Instrua um modelo de chat do Fireworks para gerar uma recomendações de filme com base nos resultados reclassificados.

O Fireworks AI fornece uma plataforma para treinar e executar modelos de IA de código aberto. Você pode usar o MongoDB para armazenar dados operacionais e de memória e para retreinar modelos para casos de uso específicos.

Um aplicação RAG recupera dados relevantes e os passa para um modelo de chat como contexto, para que o modelo responda com base em seus dados em vez de confiar apenas no que aprendera durante o treinamento. Neste tutorial, o MongoDB armazena e recupera seus dados. A IA do Voyage fornece o modelo de incorporação que incorpora os dados e o modelo de reclassificação que reclassifica os resultados recuperados, e a IA do Fireworks fornece o modelo de chat que gera a resposta final.

Para concluir este tutorial, você deve ter os seguintes recursos:

  • Um dos seguintes tipos de cluster MongoDB :

    • Um cluster do Atlas executando a versão do MongoDB 6.0.11, 7.0.2, ou posterior. Certifique-se de que seu endereço IP esteja incluído na lista de acesso do seu projeto Atlas.

    • Uma implantação local do Atlas criada usando Python e Docker. Instale atlas-local-lib-py (pip install atlas-local-lib-py) para criar e gerenciar implantações locais programaticamente. Para saber mais, consulte o repositório atlas-local-lib-py.

    • Um cluster MongoDB Community com Search e pesquisa vetorial instalados.

  • O conjunto de dados de amostra carregado em seu cluster. Este tutorial utiliza a collection sample_mflix.movies.

  • Uma chave de API do Fireworks AI. Para criar uma, acesse Chaves de API nas configurações da sua conta do Fireworks.

  • Uma chave de API do Voyage AI. Para criar uma, consulte Gerenciar chaves de API do modelo Voyage AI.

  • Python v3.11 ou posterior.

  • uv.

Nesta seção, você prepara seu ambiente criando um ambiente virtual, instalando as dependências necessárias, definindo suas variáveis de ambiente e criando um arquivo de projeto .

1

A partir do seu terminal, execute os seguintes comandos para criar um novo diretório denominado fireworks-mongodb-project e iniciar um ambiente virtual:

mkdir fireworks-mongodb-projectcd fireworks-mongodb-projectuv venvsource .venv/bin/activate
2

A partir do diretório fireworks-mongodb-project, execute o seguinte comando para instalar as dependências necessárias:

uv pip install pymongo openai voyageai python-dotenv
3

No seu diretório fireworks-mongodb-project, crie um arquivo .env e adicione o seguinte código:

FIREWORKS_API_KEY="<fireworks-api-key>"VOYAGE_API_KEY="<voyage-api-key>"MONGODB_URI="<connection-string>"

Substitua <fireworks-api-key> pela chave da API do Fireworks e substitua <voyage-api-key> pela chave da API da Voyage AI.

Substitua <connection-string> pela string de conexão do seu cluster do Atlas ou da implantação local do Atlas.

Sua string de conexão deve usar o seguinte formato:

mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net

IMPORTANTE: certifique-se de que a string de conexão inclua as credenciais do usuário de banco de dados. Para aprender mais sobre como localizar sua string de conexão, consulte Conectar-se a um cluster por meio de bibliotecas de clientes.

4

No seu diretório fireworks-mongodb-project, crie um arquivo denominado main.py. Adicione o seguinte código a este arquivo para carregar suas variáveis de ambiente e definir dois argumentos de linha de comando, que especificam a query de pesquisa e o número de resultados:

import argparseimport osimport time import voyageaifrom dotenv import load_dotenvfrom openai import OpenAIfrom pymongo import MongoClientfrom pymongo.operations import SearchIndexModel load_dotenv() parser = argparse.ArgumentParser()parser.add_argument("--query", default="something interesting")parser.add_argument("--count", type=int, default=10)args = parser.parse_args()

Em etapas futuras, você adicionará código a este arquivo para incorporar, recuperar e gerar respostas a partir dos dados do filme.

Nesta seção, você configura seus clientes, incorpora o campo plot de documentos de filme 50 e armazena cada vetor em um novo campoembedding. Em seguida, você cria um índice MongoDB Vector Search nesse campo.

1

Adicione o seguinte código ao seu arquivo main.py para criar um cliente Fireworks , um cliente Voyage AI e um cliente MongoDB e para selecionar seus modelos:

fireworks = OpenAI( base_url="https://api.fireworks.ai/inference/v1", api_key=os.environ["FIREWORKS_API_KEY"],)voyage = voyageai.Client() mongo_client = MongoClient(os.environ["MONGODB_URI"])collection = mongo_client["sample_mflix"]["movies"] EMBEDDING_MODEL = "voyage-4"RERANK_MODEL = "rerank-3"CHAT_MODEL = "accounts/fireworks/models/gpt-oss-120b"DIMENSIONS = 1024

Este exemplo seleciona os seguintes modelos:

  • voyage-4: Um modelo de incorporação do Voyage AI, usado para incorporar gráficos de filmes e pesquisar queries.

  • rerank-3: Um modelo de reclassificação do Voyage AI, usado para reclassificar candidatos do MongoDB Vector Search por relevância.

  • accounts/fireworks/models/gpt-oss-120b: Um modelo de bate-papo do Fireworks, usado para gerar recomendações de filmes com base nos dados do MongoDB .

Observação

Este tutorial solicita vetores de dimensão 1024 do modelo de incorporação da Voyage AI para reduzir o armazenamento. Você pode usar qualquer modelo de incorporação do Voyage AI, desde que o valor DIMENSIONS corresponda ao tamanho dos vetores que o modelo retorna.

2

Adicione o seguinte código ao seu arquivo main.py para incorporar a trama de cada filme no campoembedding :

def get_embeddings(texts, input_type="document"): response = voyage.embed( texts, model=EMBEDDING_MODEL, input_type=input_type, output_dimension=DIMENSIONS ) return response.embeddings docs = list( collection.find( {"plot": {"$exists": True, "$ne": ""}}, {"_id": 1, "title": 1, "plot": 1} ).limit(50)) vectors = get_embeddings([doc["plot"] for doc in docs]) for doc, vector in zip(docs, vectors): collection.update_one({"_id": doc["_id"]}, {"$set": {"embedding": vector}}) print(f"Embedded {len(docs)} movies.")
3

Adicione o seguinte código para criar um índice do MongoDB Vector Search no campo embedding e aguarde até que o índice termine de construir:

index = SearchIndexModel( definition={ "fields": [ { "type": "vector", "path": "embedding", "numDimensions": DIMENSIONS, "similarity": "cosine", } ] }, name="movie_vector_index", type="vectorSearch",)collection.create_search_index(model=index) print("Waiting for the index to build...")while not any( idx.get("queryable") for idx in collection.list_search_indexes("movie_vector_index")): time.sleep(5) print("Index is ready.")

Nesta seção, você executa uma consulta de Vector Search do MongoDB no campo plot dos documentos e reclassifica os resultados. Em seguida, você passa os filmes reclassificados para um modelo de bate-papo do Fireworks como contexto para gerar uma recomendações.

1

Adicione o seguinte código ao seu arquivo main.py para incorporar uma consulta de campo plot e recuperar filmes cujos gráficos sejam semelhantes à consulta:

def vector_search(query, limit=5): query_vector = get_embeddings([query], input_type="query")[0] pipeline = [ { "$vectorSearch": { "index": "movie_vector_index", "path": "embedding", "queryVector": query_vector, "numCandidates": limit * 20, "limit": limit, } }, { "$project": { "_id": 0, "title": 1, "plot": 1, "score": {"$meta": "vectorSearchScore"}, } }, ] return list(collection.aggregate(pipeline)) print("\nVector search results:")for movie in vector_search(args.query, limit=args.count): print(f'{movie["score"]:.3f} {movie["title"]}')
2

Para melhorar a precisão do MongoDB Vector Search , recupere um conjunto de candidatos maior e reclassifique-o usando um modelo de reclassificação Voyage AI antes de passar os resultados para um modelo de chat. Adicione o seguinte código ao seu arquivo main.py:

def rerank(query, movies, top_n=5): candidate_texts = [f'{m["title"]}: {m["plot"]}' for m in movies] reranking = voyage.rerank(query, candidate_texts, model=RERANK_MODEL, top_k=top_n) return [movies[result.index] for result in reranking.results] def retrieve(query, top_n=5): return rerank(query, vector_search(query, limit=top_n * 4), top_n=top_n) print("\nReranked, precise results:")for movie in retrieve(args.query, top_n=args.count): print(movie["title"])
3

Adicione o seguinte código ao seu arquivo main.py para passar os filmes reclassificados para um modelo de chat do Fireworks como contexto e instrua o modelo a responder somente a partir desse contexto:

def answer(question): context = "\n\n".join(f'{m["title"]}: {m["plot"]}' for m in retrieve(question)) response = fireworks.chat.completions.create( model=CHAT_MODEL, messages=[ { "role": "system", "content": "Answer using only the movies in the context. " "If the context doesn't contain the answer, say so.", }, { "role": "user", "content": f"Context:\n{context}\n\nQuestion: {question}", }, ], ) return response.choices[0].message.content print("\nRecommendation:")print(answer(f"Recommend a movie about {args.query}, and explain why."))

Para executar o arquivo main.py, execute o seguinte comando no diretório fireworks-mongodb-project. Use os sinalizadores --query e --count para especificar a query de pesquisa e o número de resultados que o arquivo retorna:

uv run main.py --query "a heist that goes wrong" --count 5

Se o comando for executado com êxito, a saída se assemelha ao seguinte:

Embedded 50 movies.Waiting for the index to build...Index is ready. Vector search results:0.724 I Became a Criminal0.664 Hallelujah0.662 Zoo in Budapest0.658 Rear Window0.654 The Long Voyage Home Reranked, precise results:I Became a CriminalHallelujahFoolish WivesZoo in BudapestA Corner in Wheat Recommendation:**I Became a Criminal** -- This gritty film-noir follows cynicalex-RAF flyer Morgan, who joins a break-in gang led by Narcy. Theirfirst job quickly turns disastrous when the getaway car crashesafter the crew accidentally kills a policeman. The movie centers ona heist that goes badly wrong, showcasing the chaos, moral fallout,and gritty consequences of a botched robbery.

Para saber mais sobre as opções de configuração do Fireworks e Voyage AI e os métodos usados neste tutorial, consulte Integrar MongoDB com Fireworks AI.

Para criar um agente de chamada de ferramentas que se lembre de seu histórico de conversas no MongoDB, consulte Especificar ferramentas do agente e Persistir a memória do agente.

Para saber mais sobre a IA do Fireworks, consulte a Documentação da IA do Fireworks.

Para saber mais sobre a Voyage AI, consulte Incorporações de texto e reclassificação.