feat: cota lexical na fusão, recusa off-topic no prompt, docs medidas
Fusão:
- fuse_rankings() extrai a fusão RRF e aplica MAX_KEYWORD_ONLY (padrão 2):
quantas posições podem ser ocupadas por trechos que só o BM25 achou. O que os
dois lados confirmam nunca conta contra a cota.
- O controle é por cota de posições, não por piso de nota. Medido: a razão da
nota BM25 não separa acerto de ruído — para 'como posso perdoar quem me
feriu?', Deuteronômio 28:27 pontua 1,000 do topo e o correto Lucas 7:47 fica
em 0,716 (rank 12). Um piso cortaria o certo e manteria o errado.
- Ponderar o RRF também não resolve: com peso 0,5 no BM25 os achados só-lexicais
caem abaixo do 6º vetorial (0,5/61 < 1/66) e somem, levando junto Jó 3:13 e
Joel 3:14, os melhores resultados medidos.
Portão off-topic:
- MIN_SIMILARITY não consegue implementar 'sem evidência'. Medido no índice
completo: 0/6 perguntas off-topic bloqueadas em qualquer limiar de 0,30 a
0,50 ('bolo de chocolate' bate 0,544 em Lv 7:14; 'cotação do dólar' 0,494).
A recusa passa a ser instruída no SYSTEM_PROMPT e o limiar fica documentado
como filtro de ruído.
This commit is contained in:
1 parent
8f5e098d8f
commit
816e6be159
9 files changed
+212
-26
No files matched your search
+14
-3
@@ -40,12 +40,23 @@ EMBEDDING_MODEL=paraphrase-multilingual-MiniLM-L12-v2
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Busca
|
||||
# A recuperação é híbrida: similaridade vetorial + BM25, fundidos por posição
|
||||
# (RRF). MIN_SIMILARITY é o piso do lado vetorial; abaixo dele o trecho só entra
|
||||
# se o BM25 o encontrar.
|
||||
# A recuperação é híbrida: similaridade vetorial + BM25 (com stemming), fundidos
|
||||
# por posição (RRF).
|
||||
#
|
||||
# MIN_SIMILARITY é filtro de ruído do lado vetorial, NÃO um detector de assunto
|
||||
# fora do tema. Medido no corpus completo: nenhum valor entre 0,30 e 0,50
|
||||
# bloqueou uma pergunta off-topic ("como fazer um bolo de chocolate" bate 0,544
|
||||
# em Levítico 7:14). Num corpus de 31 mil versículos sempre há algum acima de
|
||||
# qualquer limiar; a recusa off-topic é instruída ao modelo no SYSTEM_PROMPT.
|
||||
#
|
||||
# MAX_KEYWORD_ONLY: posições da resposta que podem ser ocupadas por trechos que
|
||||
# só o BM25 achou. A nota BM25 não separa acerto de ruído (Deuteronômio 28:27
|
||||
# pontua 1,000 do topo para "como posso perdoar", e o correto Lucas 7:47 fica em
|
||||
# 0,716), então o controle é por cota de posições. 0 desliga o lado lexical.
|
||||
# ---------------------------------------------------------------------------
|
||||
TOP_K=6
|
||||
MIN_SIMILARITY=0.35
|
||||
MAX_KEYWORD_ONLY=2
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Ingestão do corpus
|
||||
|
||||
Reference in new issue
Block a user