Forum Replies Created
-
AuthorPosts
-
Isso, por essas razões pode ocorrer falha em algumas execuções, onde a LLM “se perde”
Você pode tentar usar o LangGraph conforme comentei, ou ainda dar uma olhada em serviços como o Crew AI, que é uma opção que tem sido bastante usada para criação de agentes mais complexos. Portanto pode ser algo mais robusto e confiável para ser usada em produção, além de mais completo que o LangChain devido à sua melhor integração com modelos open source
Caso deseje focar em modelos open source, também sugiro dar uma olhada no Llama Index
Que ótimo que conseguiu descobrir
Esse problema deve ocorrer porque alguns PDFs possuem conteúdos mal formatados ou usam codificação que dificulta a extração adequada do texto, resultando em palavras juntas ou sem espaçamento. Talvez quando você abriu o PDF com o Word e salvou novamente, o Word automaticamente reformatou o texto e com isso corrigiu essas inconsistências.
Para evitar isso no futuro, você pode usar ferramentas como PyPDF2 ou pdfplumber para inspecionar e corrigir problemas nos arquivos antes de carregá-los com o PyPDFLoader. Ou ainda, converter em um arquivo de texto ou outro formato legível antes de enviar o conteúdo para o RAG.
Se quiser também pode testar outros loaders de PDF que o LangChain suporta, como PyMuPDFLoader ou PDFMinerLoader. Mais informações aqui: https://python.langchain.com/docs/integrations/document_loaders/
Para lidar com PDFs com formatos inconsistentes, o uso de serviços como o Unstructured (que o LangChain também suporta) pode ser uma ótima solução para extrair textos de maneira mais robusta. Para mais informações sobre ele veja https://python.langchain.com/docs/integrations/document_loaders/unstructured_file/ – aliás também deixamos comentários sobre no final do Colab do projeto 03 (aqui)
Olá Tatiane!
Você pode usar o programa labelImg, que permite fazer as anotações de modo bastante prático. Na aula “Criação do seu dataset de imagens manualmente” tem uma explicação detalhada mostrando como pode usar.
Caso use o modelo YOLOv8 ou versão superior eu recomendo usar a plataforma roboflow, que oferece uma ferramenta gratuita para anotação e costuma ser mais prático pois gera em uma interface unificada os arquivos de anotação no formato para essa versão do YOLO – veja aqui a explicação de como usar https://roboflow.com/how-to-label/yolov8
Olá Leonardo!
Se entendi corretamente, inicialmente não estava funcionando, mas depois você executou o mesmo código com a mesma pergunta e funcionou. Isso pode estar relacionado à própria biblioteca e não a um erro na programação. Fiz algumas pesquisas e há diversos relatos da comunidade sobre inconsistências no LangChain, especialmente quando ele entra em loops infinitos, mesmo com tudo configurado corretamente.
Embora o LangChain seja excelente para lidar com várias funções de LLMs, ele apresenta algumas limitações para a implementação nativa de agentes, deixando a desejar em certos quesitos. Por isso, para tentar resolver eu recomendo antes experimentar mudar o prompt do sistema para ficar de acordo com o seu objetivo específico, dá para testar desse modo antes e ver se apresenta melhoras.
Parece que recentemente os autores da biblioteca passaram a mudar um pouco o foco, fazendo com que o melhor modo de implementar agentes no ecossistema LangChain seja através do LangGraph, que é uma extensão da biblioteca justamente voltada para a criação de agentes personalizáveis.
Para adaptar é necessário algumas modificações, esse artigo aqui explica bem e detalha exatamente essas mudanças: https://python.langchain.com/docs/how_to/migrate_agent/
Opa, parece ser algo que afeta a pré-visualização somente, mas para garantir você consegue me passar a versão do LangChain e a versão do Streamlit que tem instalado em sua máquina local? Para eu tentar reproduzir o problema daqui, já que em meus ambientes está funcionando conforme esperado
Olá Fernando,
Primeiramente, agradeço o feedback positivo! Vamos às suas dúvidas:
Em relação às respostas incorretas da IA, pela sua descrição parece que o modelo está usando somente conhecimento prévio ou não está encontrando os dados no banco vetorial corretamente. Você comentou que o texto apareceu juntas sem espaçamento, isso mostrou quando clica em cima do botão (popover) para ver a fonte? Se puder mandar um print de onde aparece, pode até ser que seja um bug do streamlit e que nessa caixinha está exibindo o texto sem os espaços ao final de cada bloco. O problema de palavras sem espaçamento poderia estar prejudicando sim a indexação e a recuperação, mas se foi utilizado exatamente o código da aula então não deveria ocorrer pois a função exata já faz esse processamento correto do texto antes de enviar à rede neural (mas só para testar, poderia usar também outro método que faz o pré-processamento do texto). Recomendo fazer novamente o envio dos documentos e testar diferentes parâmetros para o ‘k’ e ‘fetch_k’, dentro de vectorstore.as_retriever().
Quanto a melhorar o tempo de resposta inicial, você está correto. O carregamento e a indexação podem ser feitos separadamente, em um aplicativo à parte. Isso permite iniciar o chat acessando diretamente o vectorstore já pronto, reduzindo significativamente o tempo de resposta inicial. E caso o arquivo seja enviado apenas uma vez e não mude então pode salvar em disco, assim não precisa executar a indexação toda vez que inicia o app. Para mais velocidade no tempo de indexação/recuperação, sugiro dar uma olhada no Pinecone, que pode ser facilmente integrado com o LangChain, basicamente precisa apenas mudar os métodos para integração e assim pode reaproveitar todo o restante do código (veja mais).
E em relação às limitações de tamanho do arquivo, é possível sim carregar arquivos grandes porém o processamento e a indexação podem levar mais tempo e consumir mais memória, portanto precisa verificar se o hardware é adequado ou se vale mais a pena usar soluções que rodam em cloud como o Pinecone. Para PDFs extensos, como livros, recomenda-se dividi-los em chunks menores para facilitar o processamento e melhorar a recuperação de informações durante as consultas. A abordagem correta é experimentar diferentes parâmetros para o método do retriever, o que tenderá a funcionar melhor para documentos bem maiores.
-
This reply was modified 1 year, 10 months ago by
Gabriel Alves.
Olá Flávio! Excelente, obrigado pela sua contribuição
Para não se preocupar com as funções de desenho também é possível usar como alternativa a implementação via CLI, o que pode ser um pouco mais prático
Olá Gabrielli, tudo bem?
Agradecemos a sugestão! Estamos planejando um próximo curso sobre LLMs, muito provavelmente abordaremos esses temas
Ah sim entendo, ainda mais considerando que hoje existem várias tecnologias novas e muito relevantes, é complicado arrumar tempo para aprender tudo
mas faz no seu tempo, que vai dar certo =)
bons estudos!
Olá José!
Sim, seria totalmente viável utilizar o reconhecimento facial via câmera do celular como um método de marcação de ponto no seu aplicativo. Para isso bastaria integrar seu software em Delphi com uma tecnologia de reconhecimento facial – como a mostrada nesse curso de visão computacional ou no curso de Reconhecimento facial aqui da plataforma.
Para o uso dessas técnicas teria que se conectar via API já que o processamento rodaria em um servidor, portanto precisaria de conexão constante com a internet. Desse modo costuma ser melhor porque o processamento é mais pesado e não dependerá do hardware do dispositivo, mas caso seja um único celular fixo e com excelente configuração então talvez rodar tudo localmente pelo celular seja melhor (ambas as alternativas possuem suas vantagens e desvantagens, então veja qual faz mais sentido).
O reconhecimento facial pode ser realizado 100% localmente no dispositivo usando o Google ML Kit ou alguma biblioteca de Face Net em mobile por exemplo, mas como precisa se conectar ao sistema em Delphi então ainda haveria a necessidade de ser enviado a um servidor remoto, onde seu sistema de controle de ponto em Delphi pode validar o registro e associá-lo ao banco de dados.
Portanto, quanto ao reconhecimento seria possível sim e você pode integrar com alguma dessas maneiras, a parte mais trabalhosa seria desenvolver o aplicativo em si na linguagem ou framework de sua preferência, contanto que funcione em Android e iOS e tenha biblioteca para se conectar com a câmera do celular de forma eficiente.
Opa, isso! Creio que o artigo vá ajudar bastante, mas qualquer dúvida pode postar aqui no fórum!
7 de dezembro de 2024 at 22:41 in reply to: Mensurar o tamanho (largura e altura) em imagens 2D. #46818Disponha =)
6 de dezembro de 2024 at 10:40 in reply to: Mensurar o tamanho (largura e altura) em imagens 2D. #46811Olá Julio!
Para medir com precisão o tamanho de um objeto em uma imagem eu sugiro você utilizar um algoritmo específico para isso. Existem várias heurísticas hoje bem definidas feitas para chegar a esse resultado, mas talvez uma das mais confiáveis usam esse artigo como referência. Além disso, o autor também fornece já o código completo para fazer isso no próprio OpenCV.
Esse processo exige atenção para alguns detalhes, então recomendo ver com calma o artigo pois lá explica bem certo. É importante seguir as recomendações para deixar o algoritmo bem calibrado, como por exemplo ajustar bem o objeto de referência para medir do modo mais preciso possível (isso é explicado detalhadamente no artigo).
Olá José! Respondi lá no outro tópico que criou, mas já que perguntou neste tópico deixo a resposta aqui também:
Para fazer a leitura de um RG ou outro documento o segredo está em incorporar as técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento, focando em antes extrair as localizações desses textos (regiões de interesse). Se desejar, pode antes fazer o teste com detectores de texto como o EAST para detectar as regiões onde os textos estão localizados, ou também testar com o EasyOCR (que já faz a detecção+reconhecimento).
Em um dos projetos do curso é mostrado como fazer o scan de documentos, o que funciona para o caso desse tipo de documento também. Como adicional, você precisa apenas incorporar outras técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento.
A minha recomendação mesmo é seguir a lógica mostrada nesse artigo aqui, que explica exatamente uma maneira de como você pode criar um programa para ler melhor os campos de documentos (além disso, é disponibilizado o código fonte completo). Nesse exemplo do artigo ele usa uma CNH mas pode ser adaptado para RG pois o princípio é o mesmo, apenas alguns nomes e localizações de campos que mudam.
Olá José!
Para fazer a leitura de um RG ou outro documento o segredo está em incorporar as técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento, focando em antes extrair as localizações desses textos (regiões de interesse). Se desejar, pode antes fazer o teste com detectores de texto como o EAST para detectar as regiões onde os textos estão localizados, ou também testar com o EasyOCR (que já faz a detecção+reconhecimento).
Em um dos projetos do curso é mostrado como fazer o scan de documentos, o que funciona para o caso desse tipo de documento também. Como adicional, você precisa apenas incorporar outras técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento.
A minha recomendação mesmo é seguir a lógica mostrada esse artigo aqui, que explica exatamente uma maneira de como você pode criar um programa para ler melhor os campos de documentos (além disso, é disponibilizado o código fonte completo). Nesse exemplo do artigo ele usa uma CNH mas pode ser adaptado para RG pois o princípio é o mesmo, apenas alguns nomes e localizações de campos que mudam.
-
This reply was modified 1 year, 10 months ago by
-
AuthorPosts
