Busca semântica (neural search) para INLABS/OpenSearch #312
Open
Heitorh3 wants to merge 9 commits into
Open
Conversation
Adds an opt-in `neural_search_config` option to the search schema that combines keyword matching with vector similarity search (k-NN) when querying OpenSearch, backed by a multilingual sentence-transformers embedding model. Includes document embedding during indexing, a "Encontrado por similaridade" tag in the email template for semantic-only matches, and score-threshold/result-cap controls.
Hits found only via k-NN similarity (no lexical matched_terms) were grouped under an empty "matches" key, so the report's "Resultados para: <termo>" heading was silently skipped for semantic-only matches. Fall back to the configured searched_expression so those results keep a visible term label.
Replaces the single "bem-estar" term with a broader set of synonyms (qualidade de vida, vitalidade, equilíbrio, etc.) to better exercise neural search matching across related concepts.
Evita falsos positivos vindos de conteúdo não relacionado ao habilitar neural_search.
Contributor
|
@Heitorh3 Heitor, ficou uma vírgula sobrando no Também percebi que o build está demorando cerca de 3 a 4 minutos na minha máquina. Dei uma pesquisada e pode ser por causa do |
Contributor
Author
|
@HenriqueLopes741 Henrique, pode ser na sua maquina, na minha demorou 19s para gerar a imagen. |
Each notification branch already links has_matches_task to its own notify_task; the leftover reference here was undefined and would raise a NameError when building the DAG.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Busca semântica (neural search) para INLABS/OpenSearch
Descrição
Adiciona suporte à busca semântica (neural search) para a fonte INLABS quando o backend OpenSearch está habilitado, permitindo encontrar publicações relevantes mesmo quando não há correspondência exata dos termos pesquisados.
Principais mudanças:
Busca semântica com embeddings: novo módulo
src/utils/open_search/embeddings.py, que gera embeddings de passagem (documentos) e de consulta (queries) usando o modelo multilíngueintfloat/multilingual-e5-base(768 dimensões), com prefixospassage:/query:apropriados para cada caso e tratamento de truncamento de textos longos (mantendo a "cauda" do corpo do texto, que carrega mais conteúdo específico do que o preâmbulo padrão de atos normativos).Novo parâmetro
neural_search_config: permite habilitar a busca semântica por DAG, definindoIndexação com KNN vector: campo
embeddingno mapeamento do OpenSearch passa a usar o métodohnsw(enginelucene,cosinesimil), e o campoidentificaganha analisadorportuguesee subcamposkeyword/autocomplete.Makefile / variáveis do Airflow:
make create-opensearch-variableagora também criaOPENSEARCH_HOST,OPENSEARCH_USEReOPENSEARCH_PASS, além da variável existenteRO_DOU_INLABS_USE_OPENSEARCH.Documentação: novos exemplos de configuração (busca semântica), atualização do guia de instalação (seção sobre backend de busca do INLABS: SQL vs. OpenSearch), atualização do guia de parâmetros e reorganização da página de recursos e funcionalidades.
Dependências: adiciona
sentence-transformers>=5.5.1aorequirements.txt.Testes: cobertura ampliada em
tests/inlabs_hook_test.py,tests/inlabs_searcher_test.pye novotests/opensearch_query_builder_test.pypara os novos parâmetros e comportamento de busca híbrida (keyword + semântica).Tipo de mudança
Checklist
Considerações finais
A busca semântica só está disponível para a fonte INLABS com o backend OpenSearch habilitado (
RO_DOU_INLABS_USE_OPENSEARCH=True); em modo SQL, o parâmetroneural_search_configé ignorado. Quandoneural_search_configestá habilitado, os parâmetrosignore_attachmentseignore_inline_tablessão ativados automaticamente. Com isso, conteúdos como anexos e tabelas incorporadas deixam de ser exibidos, garantindo consistência visual entre os resultados apresentados ao usuário.