Skip to content

MakerChain is an intelligent agent designed to answer technical questions about electronics and embedded hardware. Using LangChain with the LLM local model and a simple web interface with FastAPI, the project allows indexing technical documents, datasheets, and source codes to provide accurate answers based on the user's local content.

License

Notifications You must be signed in to change notification settings

gilsonfiho/makerchain

Repository files navigation

🚀 Makerchain

Makerchain é um assistente inteligente baseado em busca vetorial para suporte em projetos maker localmente, utilizando modelos locais Ollama com Mistral, integrado com FastAPI para uma interface web simples e eficiente.


📋 Índice


✨ Descrição

Makerchain permite consultas inteligentes em documentos indexados por vetores, combinando o poder do modelo Mistral local via Ollama com a eficiência do índice FAISS.
Você pergunta em português e recebe respostas contextuais rápidas — tudo via uma interface web simples, com histórico e opção para limpar! 💬✨


⏳ Linha do Tempo de Execução

  1. 🛠️ Ingestão dos dados (ingest.py)

    • Coleta e processa documentos (PDF, condigo fonte, texto, etc).
    • Extrai texto dos documentos usando bibliotecas como unstructured e pypdf.
    • Divide o texto em pedaços menores (chunks).
    • Gera embeddings para cada chunk usando OllamaEmbeddings.
    • Armazena os vetores no banco vetorial local FAISS.
  2. 📚 Carga do banco vetorial e modelo (load_qa_chain)

    • Carrega o banco de dados FAISS com os embeddings.
    • Inicializa o modelo de linguagem ChatOllama (ex: modelo "mistral").
  3. 💬 Recepção da pergunta via API (FastAPI)

    • Usuário envia a pergunta via aplicação web.
    • Backend recebe e processa a requisição.
  4. 🔍 Processamento da pergunta e recuperação

    • O retriever busca os chunks mais relevantes no FAISS.
    • O LLM gera resposta contextualizada usando os chunks.
  5. 📝 Resposta ao usuário e histórico

    • Resposta é enviada para o frontend.
    • Perguntas e respostas são armazenadas em sessão para histórico.
    • Usuário pode limpar o histórico via botão.

🧩 Escolha do Splitter no ingest.py

O script ingest.py agora permite selecionar dinamicamente o splitter para divisão dos chunks:

  • recursive – padrão, com RecursiveCharacterTextSplitter, focado em velocidade e simplicidade.
  • semantic – utiliza .sentence_splitter.SemanticChunker (ou similar) para gerar chunks contextuais mais coesos, com base em embeddings.

⚙️ Componentes do Projeto

Componente Função
src/main.py Servidor FastAPI com rotas, sessão e interface web
src/qa_engine.py Carrega FAISS, embeddings e cadeia de QA usando Ollama + Mistral
vectorstore/db_faiss Índice vetorial FAISS local
src/templates/index.html Template HTML com formulário, resultados e histórico
ingest.py Script para processar documentos e criar índice vetorial FAISS

🛠 Tecnologias Usadas

  • FastAPI — Framework web rápido e moderno
  • Uvicorn — Servidor ASGI para rodar FastAPI
  • Jinja2 — Templates HTML dinâmicos
  • LangChain — Framework para construção de pipelines com LLMs
  • Langchain-Ollama — Integração local com modelos Ollama
  • FAISS — Biblioteca para indexação e busca vetorial
  • Python-Multipart — Suporte a envio de formulários
  • Starlette Sessions — Gerenciamento de sessão no FastAPI

🚀 Como rodar

  1. Instale as dependências:

    pip install -r requirements.txt
  2. Adicione os documentos, códigos fonte e outros arquivos na pasta data.

  3. Faça a vetorização dos arquivos usando o script ingest.py:

    python3 ingest.py
  4. Execute o servidor FastAPI:

    python -m uvicorn src.main:app --reload
  5. Acesse o sistema pelo navegador:
    http://localhost:8000

  6. Interaja com o Makerchain! ✨


🐳 Executando com Docker

Você pode rodar o MakerChain via Docker de forma se preferir:

✅ Pré-requisitos


🚀 Passos para rodar

  1. Execute via Docker Compose:
docker-compose up --build
  1. Acesse no navegador:
http://localhost:8000

📦 docker-compose.yml usado

services:
  makerchain:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    working_dir: /app
    command: uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
    environment:
      - OLLAMA_HOST=http://host.docker.internal:11434

🧩 Próximos Passos:

  • Integração com o OpenWebUI.
  • Explorar outras alternativas para banco vetorial.
  • Uso de arquitetura MCP.

Contribuições 💡

  1. Fork o repositório
  2. Crie uma branch (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.


About

MakerChain is an intelligent agent designed to answer technical questions about electronics and embedded hardware. Using LangChain with the LLM local model and a simple web interface with FastAPI, the project allows indexing technical documents, datasheets, and source codes to provide accurate answers based on the user's local content.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •