Experimente o Elasticsearch na prática: Mergulhe em nossos notebooks de amostra, inicie um teste gratuito na nuvem ou experimente o Elastic em sua máquina local agora mesmo.
O framework LangChain4j foi criado em 2023 com este objetivo:
O objetivo do LangChain4j é simplificar a integração de LLMs em aplicações Java.
LangChain4j oferece uma maneira padronizada de:
- Criar representações vetoriais (embeddings) a partir de um determinado conteúdo, digamos, um texto, por exemplo.
- armazenar embeddings em um armazenamento de embeddings
- pesquisar vetores semelhantes no armazenamento de embeddings
- discutir com mestres em direito
- Use uma memória de bate-papo para lembrar o contexto de uma discussão com um mestre em Direito.
Esta lista não é exaustiva e a comunidade LangChain4j está sempre implementando novos recursos.
Esta postagem abordará as primeiras partes principais da estrutura.
Adicionando LangChain4j OpenAI ao nosso projeto
Como em todos os projetos Java, é apenas uma questão de dependências. Aqui usaremos o Maven, mas o mesmo resultado poderia ser obtido com qualquer outro gerenciador de dependências.
Como primeiro passo para o projeto que queremos construir aqui, usaremos o OpenAI, então precisamos apenas adicionar o artefato langchain4j-open-ai :
Para o restante do código, usaremos nossa própria chave de API, que você pode obter criando uma conta na OpenAI, ou a fornecida pelo projeto LangChain4j apenas para fins de demonstração:
Agora podemos criar uma instância do nosso ChatLanguageModel:
E, finalmente, podemos fazer uma pergunta simples e obter a resposta:
A resposta fornecida poderia ser algo como:
Se você quiser executar este código, consulte a classe Step1AiChatTest.java .
Fornecendo mais contexto com langchain4j
Vamos adicionar o artefato langchain4j :
Esta ferramenta oferece um conjunto de recursos que pode nos ajudar a construir uma integração LLM mais avançada para criar nosso assistente. Aqui, criaremos uma interface Assistant que fornece o método chat , o qual chamará automaticamente o ChatLanguageModel que definimos anteriormente:
Basta pedirmos à classe LangChain4j AiServices para construir uma instância para nós:
Em seguida, chame o método chat(String) :
Está apresentando o mesmo comportamento de antes. Então, por que alteramos o código? Em primeiro lugar, é mais elegante, mas além disso, agora você pode dar instruções ao LLM usando anotações simples:
Isso está resultando em:
Se você quiser executar este código, consulte a classe Step2AssistantTest.java .
Mudando para outro LLM: langchain4j-ollama
Podemos usar o excelente projeto Ollama. Executar um LLM localmente em sua máquina pode ser útil.
Vamos adicionar o artefato langchain4j-ollama :
Como estamos executando o código de exemplo usando testes, vamos adicionar Testcontainers ao nosso projeto:
Agora podemos iniciar/parar contêineres Docker:
Nós "apenas" precisamos mudar o objeto model para se tornar um OllamaChatModel em vez do OpenAiChatModel que usamos anteriormente:
Observe que pode levar algum tempo para obter a imagem com seu modelo, mas depois de um tempo, você poderá obter a resposta:
Melhor com memória
Se fizermos várias perguntas, por padrão o sistema não se lembrará das perguntas e respostas anteriores. Então, se perguntarmos depois da primeira pergunta "Quando ele nasceu?", Nosso aplicativo responderá:
O que é um absurdo. Em vez disso, devemos usar a Memória de Chat:
Executar as mesmas perguntas agora fornece uma resposta significativa:
Conclusão
Na próxima publicação, descobriremos como podemos fazer perguntas ao nosso conjunto de dados privado usando o Elasticsearch como repositório de embeddings. Isso nos dará uma maneira de elevar nossa busca de aplicativos a um novo patamar.
Perguntas frequentes
O que é LangChain4j?
LangChain4j (LangChain para Java) é um conjunto de ferramentas poderoso para construir sua aplicação RAG em Java puro.




