Visão geral
Neste guia, você pode aprender a criar um aplicativo que usa LLPhant, uma estrutura de IA generativa PHP, e MongoDB como um armazenamento de vetor. O LLphant é um framework abrangente de código aberto que oferece uma variedade de recursos, fornecendo FERRAMENTAS para criar aplicativos baseados em IA com suporte para vários provedores de LLM.
Por que usar MongoDB com LLphant?
O LLphant suporta o uso do MongoDB como um armazenamento de incorporações vetoriais, o que permite criar aplicativos avançados de IA que exigem pesquisa semântica e operações vetoriais. O LLphant também suporta os modelos de incorporação de IA Voyage do MongoDB, que são otimizados para pesquisa e recuperação precisas de IA. Os recursos de pesquisa vetorial nativos do MongoDB, combinados com o framework de IA do LLphant, fornecem os seguintes recursos:
Armazenar e pesquisar embeddings: Use as embeddings da Voyage AI com o MongoDB Vector Search para realizar consultas de pesquisa semântica rápidas e precisas em grandes coleções de documentos.
Armazenamento flexível de documento: armazene metadados estruturados e incorporações vetoriais no mesmo documento.
Aplicativos de IA escaláveis: crie aplicativos que possam lidar com grandes volumes de documentos e queries complexas.
Pesquisa multimodal: Vectorize dados mistos de texto, imagem e vídeo e consulte esses dados em uma única query de pesquisa. Para aprender mais, consulte Incorporações multimodais na documentação do Voyage AI.
Essa combinação oferece suporte a aplicativos do mundo real, como sistemas inteligentes de gerenciamento de documento , pesquisa semântica de produtos, bases de conhecimento e mecanismos de recomendações de conteúdo baseados em IA.
Tutorial de início rápido
Este tutorial mostra como construir um sistema inteligente de pesquisa de documento usando LLphant e MongoDB. O aplicativo processa documentos que armazenam dados de restaurantes, gera incorporações de vetores de IA Voyage, armazena-os no MongoDB e fornece recursos de pesquisa semântica. O tutorial inclui instruções para conectar-se a um cluster do MongoDB Atlas e implementar a funcionalidade de pesquisa vetorial.
Configurar seu projeto
Siga as etapas nesta seção para instalar as dependências do projeto, criar um cluster do Atlas e configurar a estrutura do aplicativo.
Verifique os pré-requisitos.
Para criar o aplicativo Quick Start, instale o seguinte software em seu ambiente de desenvolvimento:
Pré-requisitos | Notas |
|---|---|
Use a versão 8.1 ou posterior. | |
Instale o | |
Necessário para o gerenciamento de dependência do PHP. | |
Necessário para gerar incorporações. Crie uma conta e gere uma chave de API. | |
Editor de código | Use o editor de código de sua escolha. |
Aplicativo de terminal e shell | Para usuários do macOS, use o Terminal ou um aplicativo semelhante. Para usuários do Windows, use o PowerShell ou o shell de comando. |
Crie um cluster do MongoDB Atlas.
O MongoDB Atlas é um serviço de banco de dados em nuvem gerenciado que hospeda suas implantações do MongoDB. Se você não tiver uma implementação do MongoDB, poderá criar um cluster do MongoDB gratuitamente concluindo o tutorial de Introdução ao MongoDB.
Para se conectar ao cluster MongoDB , você deve usar uma string de conexão. Para saber como recuperar sua string de conexão, consulte a seção Adicionar sua string de conexão do tutorial de Introdução ao MongoDB .
Importante
Salve sua string de conexão em um local seguro.
Instale o LLphant, a biblioteca PHP e as dependências.
Instale as dependências necessárias executando o seguinte comando:
composer require theodo-group/llphant symfony/dotenv mongodb/mongodb
Este comando instala o LLphant, a biblioteca PHP do MongoDB e o pacote Symfony dotenv para gerenciar variáveis de ambiente.
Configure o carregamento automático do Composer.
No diretório llphant-quickstart, navegue até o arquivo composer.json. Adicione o código destacado a este arquivo:
{ "require": { "theodo-group/llphant": "^0.11.15", "symfony/dotenv": "^8.0" }, "autoload": { "psr-4": { "App\\": "src/" } }, ... }
Este código instrui o Composer a carregar automaticamente as classes no namespace App a partir do diretório src.
Configure variáveis de ambiente.
Para armazenar suas variáveis de ambiente, crie um arquivo .env no seu diretório llphant-quickstart. Cole o seguinte código no arquivo:
VOYAGE_AI_API_KEY=<Voyage AI key> MONGODB_URI=<connection string>
Substitua os valores de espaço reservado pela chave API do Voyage IA e pela string de conexão do MongoDB das etapas anteriores.
Configurar seu aplicativo
Após configurar as dependências do projeto , siga as etapas nesta seção para criar o serviço de pesquisa e implementar a funcionalidade de pesquisa.
Crie o serviço de pesquisa.
Execute os seguintes comandos a partir do seu diretório llphant-quickstart para criar um subdiretório src e um arquivo DocumentSearchService.php. Selecione a aba macOS / Linux ou Windows para ver os comandos que correspondem ao seu sistema operacional:
mkdir -p src touch src/DocumentSearchService.php
mkdir src type nul > src\DocumentSearchService.php
Em seguida, adicione o seguinte código ao seu arquivo src/DocumentSearchService.php:
namespace App; use LLPhant\Embeddings\EmbeddingGenerator\EmbeddingGeneratorInterface; use LLPhant\Embeddings\VectorStores\VectorStoreBase; use LLPhant\Embeddings\Document; class DocumentSearchService { public function __construct( private EmbeddingGeneratorInterface $embeddingGenerator, private VectorStoreBase $vectorStore ) { } public function addDocument(string $title, string $content): void { // Generates embedding for the content $document = new Document(); $document->content = $content; $document->formattedContent = $title; $this->embeddingGenerator->embedDocument($document); // Adds to vector store $this->vectorStore->addDocument($document); } public function searchDocuments(string $query, int $limit = 5): array { // Generates embedding for the query $queryDocument = new Document(); $queryDocument->content = $query; $this->embeddingGenerator->embedDocument($queryDocument); // Searches using the embedding return $this->vectorStore->similaritySearch($queryDocument->embedding, $limit); } }
Essa classe de serviço recebe um gerador de incorporações e um armazenamento de vetores como dependências e inclui métodos que lidam com o armazenamento de documento e a pesquisa de similaridade vetorial.
Crie o script do aplicativo principal.
Selecione a aba correspondente ao seu sistema operacional e execute o seguinte comando para criar um arquivo index.php no diretório llphant-quickstart:
touch index.php
type nul > index.php
Em seguida, adicione o seguinte código a index.php:
require_once 'vendor/autoload.php'; use App\DocumentSearchService; use LLPhant\Embeddings\EmbeddingGenerator\VoyageAI\Voyage3EmbeddingGenerator; use LLPhant\Embeddings\VectorStores\MongoDB\MongoDBVectorStore; use LLPhant\VoyageAIConfig; use MongoDB\Client; use Symfony\Component\Dotenv\Dotenv; $dotenv = new Dotenv(); $dotenv->load(__DIR__ . '/.env'); $client = new Client($_ENV['MONGODB_URI']); // Creates the embedding generator $config = new VoyageAIConfig(apiKey: $_ENV['VOYAGE_AI_API_KEY']); $embeddingGenerator = new Voyage3EmbeddingGenerator($config); // Creates the vector store $vectorStore = new MongoDBVectorStore( $client, 'test', 'searchable_restaurants', 'restaurant_vector_idx' ); $searchService = new DocumentSearchService($embeddingGenerator, $vectorStore); // Sample restaurant documents to add $restaurantDocs = [ [ "name" => "Le Bernardin", "description" => "Elite French restaurant offers chef Eric Ripert's refined seafood, expert service & luxurious decor. Fine dining establishment known for exceptional French cuisine with a focus on seafood. Upscale, formal atmosphere with premium pricing. Reservations required. Dress code enforced." ], [ "name" => "Au Za'atar", "description" => "Polished eatery offering shawarma, mezze, and Lebanese dishes, plus outdoor dining. Features authentic shawarma, falafel, hummus, and fresh mezze platters. Relaxed atmosphere with both indoor and outdoor seating. Moderate pricing, family-friendly." ], [ "name" => "Bacaro", "description" => "Candlelit basement eatery serving pastas & Venetian small plates alongside Italian wines. Intimate Italian restaurant featuring traditional Venetian cicchetti (small plates) and handmade pasta. Romantic ambiance with dim lighting. Extensive Italian wine selection. Cozy, casual-upscale atmosphere. Moderate to high pricing." ], [ "name" => "Levant", "description" => "Cozy eatery serving Middle Eastern comfort food, with healthy options, and coffee. Offers authentic Lebanese, Syrian, and Mediterranean dishes. Known for fresh, healthy options including vegetarian and vegan choices. Warm, welcoming atmosphere. Great for lunch or casual dinner. Affordable pricing. Popular items include falafel wraps, tabbouleh, and grilled kebabs." ], [ "name" => "Hangawi", "description" => "Upscale menu of creative, gourmet Korean fare in a tranquil space where shoes come off at the door. Fine dining Korean restaurant specializing in traditional temple cuisine. Entirely vegetarian menu featuring organic ingredients. Unique cultural experience with floor seating and traditional Korean decor. Peaceful, meditative atmosphere. Upscale pricing. Reservations recommended." ] ]; echo "Adding sample restaurant documents...\n"; foreach ($restaurantDocs as $restaurant) { $searchService->addDocument($restaurant['name'], $restaurant['description']); echo "Added: {$restaurant['name']}\n"; } echo "\nPerforming semantic search...\n"; $searchQuery = "High-end restaurant with unique options and a romantic atmosphere"; echo "Query: $searchQuery\n\n"; $results = $searchService->searchDocuments($searchQuery, 3); echo "Search Results:\n"; foreach ($results as $index => $result) { echo ($index + 1) . ". {$result->formattedContent}\n"; echo " Description: " . substr($result->content, 0, 100) . "...\n\n"; }
Este script de aplicativo principal executa as seguintes ações:
Usa o MongoDB como um armazém de vetores, especificando o banco de dados, a coleção e o índice a serem usados.
Cria documentos de exemplo que armazenam informações sobre restaurantes na cidade de Nova York. Cada documento contém um nome de restaurante, descrição e incorporações geradas por IA.
Executa uma query de pesquisa semântica para encontrar descrições de restaurantes semelhantes à frase de query
"High-end restaurant with unique options and a romantic atmosphere".Exibe os resultados da pesquisa classificados por similaridade vetorial.
Execute seu aplicativo
Siga as etapas nesta seção para executar seu aplicativo de pesquisa de documento e testar a funcionalidade de pesquisa semântica.
Execute o aplicativo.
A partir do seu diretório llphant-quickstart, execute o seguinte comando para iniciar o aplicativo:
php index.php
Se o aplicativo for executado com êxito, seu resultado será semelhante ao código a seguir:
Adding sample documents... Added: Le Bernardin Added: Au Za'atar Added: Bacaro Added: Levant Added: Hangawi Performing semantic search... Query: High-end restaurant with unique options and a romantic atmosphere Search Results: 1. Au Za'atar Description: Polished eatery offering shawarma, mezze, and Lebanese dishes, plus outdoor dining. Features authent... 2. Bacaro Description: Candlelit basement eatery serving pastas & Venetian small plates alongside Italian wines. Intimate I... 3. Hangawi Description: Upscale menu of creative, gourmet Korean fare in a tranquil space where shoes come off at the door. ...
Teste diferentes consultas de pesquisa.
Você pode experimentar a pesquisa semântica modificando a variável $searchQuery em seu arquivo index.php e executando o aplicativo novamente. Por exemplo, use as seguintes queries de pesquisa:
# Sample search queries $searchQuery = "Casual place for Middle Eastern food"; $searchQuery = "Modern Italian restaurant"; $searchQuery = "Affordable restaurants serving Asian cuisine";
Dica
Antes de executar queries adicionais, comente o código que adiciona documentos de exemplo em seu arquivo index.php.
A pesquisa semântica retorna documentos relevantes com base no significado, em vez de nas correspondências exatas de palavras-chave, demonstrando o poder das incorporações vetoriais para aplicativos de pesquisa inteligentes.
Parabéns por concluir o tutorial Início Rápido do LLphant!
Depois de concluir essas etapas, você terá um sistema inteligente de pesquisa de documento que usa LLphant e MongoDB para fornecer funcionalidades de pesquisa semântica. O aplicativo demonstra como gerar incorporações, armazená-las no MongoDB e realizar pesquisas de similaridade vetorial para recuperação de documento por meio de IA.
Recursos adicionais
Para aprender mais sobre LLphant, MongoDB e criação de aplicativos de IA, consulte os seguintes recursos:
Documentação doLLFant
Repositório do LLFant no GitHub
MongoDB Vector Search documentation