#h SSKrSSKrSSKrSSKrSSKrSSKJr Sr\RR\S5r \RR\S5r \RR\ S5r \RR\ S5rSr\4S \S \\\R&\44S jjrSS \S \S\R&S\S\S \4 SjjrSr\S:Xa\"5 gg)N)SentenceTransformerz.\RAGdataFAISSzcontext_index.faisszcontext_texts.jsonz nomic-ai/nomic-embed-text-v2-moe diretorio_ragreturnc [R"[SS9 [RR [ 5(a[RR [ 5(a}[S5 [R"[ 5n[[ SSS9n[R"U5nSSS5 [[SS9n[S [W5S 35 X1U4$[[SS9n[RR!["S 5n[$R$"U5nU(d['S US 35e/nUHn[RR U5(a{[USSS9nUR)5R+S5nUR-UV s/sH)oR/5(dMU R/5PM+ sn 5 SSS5 M[SU35 M U(d ['S5e[S [U5S35 /n Sn [1S[U5U 5H+n XSn[R@"U5nURCU 5 [RD"U[ 5 [[ SSS9n[RF"X2SS9 SSS5 [S[S 35 X1U4$!,(df  GN=fs sn f!,(df  GM=f![4aYn[SU SU35 U R-U Vs/sHn[6R8"S5PM Os snfsn5 SnAGMSnAff=f!,(df  N=f) u>Inicializa o modelo de embeddings, documentos e índice FAISS.T)exist_oku-Carregando índice e documentos existentes...rzutf-8)encodingN)trust_remote_codez Carregados u! documentos do índice existente.z CF_[a-z].txtzNenhum arquivo encontrado em .z uArquivo não encontrado: zNenhum documento foi carregado.z documentos. rshow_progress_barz#Erro ao gerar embeddings para lote z: izGerados z embeddings.dtypewF) ensure_asciiuÍndice e documentos salvos em )$osmakedirs FAISS_DIRpathexistsCONTEXT_FAISS_PATHCONTEXT_JSON_PATHprintfaiss read_indexopenjsonloadr MODEL_NAMElenjoinDATA_DIRglob ValueErrorreadsplitextendstriprangeencode Exceptionnpzerosarrayfloat32shape IndexFlatL2add write_indexdump)rindexf documentosembedderpadrao_arquivoscaminhos_arquivoscaminhoconteudodoc embeddings batch_sizeibatchbatch_embeddingse_ dimensions c:\CODES\AI_\utils\faiss_rag.pyinicializar_ragrKsKK D) ww~~())bggnn=N.O.O =>  !34 #S7 ;q1J<&zTJ C O,,MNO(**#:FHggll8^>' " "gsW5668>>&1!!("R(3iik;399;("RS65 -gY7 8 % :;; KJ( 56JJ 1c*oz 2Q^, >'uM    . / 3 HS_%\ 23*BJJ7J  #I   i (E IIj e/0 w 71 *e4 8 +I;a 89 h &&q< ;*#S65& > 7s"QC@ A   e 8 7s`M;/M*M M M !M* O MM M' * O 4 O N5 4 OO  Operguntar;r9r<kcHURU/SS9n[R"U[RS9nUR XT5upg[ US5VV s/sHupXU USU4PM sn n$s sn nf![ an [SU 35 /sSn A $Sn A ff=f)z6Busca os k documentos mais relevantes para a pergunta.FrrrzErro ao buscar contexto: N)r.r0r2r3search enumerater/r) rLr;r9r<rMquery_embeddingDIjrDrGs rJbuscar_contextorUSs"//8*/N((?"**E||O/8A!A$HqM1Q47+HHH  )!-. s0AA=A73A=7A== B!BB!B!c[S5 [5upn[S5nUR 5S:Xag[SUS35 [ X@XSS 9nU(d [S 5 MO[S 5 UH5upgn[S US US35 [SUSSS35 [S5 M7 M![an[SU35 SnAgSnAff=f)zAPermite inserir uma frase e retorna os contextos mais relevantes.zInicializando RAG...zErro ao inicializar RAG: Nz- Digite uma frase (ou 'sair' para encerrar): sairz Buscando contexto para: '')rMzNenhum contexto encontrado.z Contextos mais relevantes:u Índice: u, Distância: z.4fzTexto: i@z...z2--------------------------------------------------)rrKr/inputlowerrU) r;r9r<rGfrase contextosidxtexto distancias rJtestar_contextora^s !&5&7# 8 FG ;;=F "  +E7!45#Eu!L  / 0  ,-%. !C KuN9S/B C GE%4L>- . (O&/   )!-.s B11 C;CC__main__))rr'r!numpyr0rsentence_transformersrRAG_DIRrr%r&rrrr#strtuplelistr5rKintrUra__name__rJrns  5  77<< ( GGLL' * WW\\)-BCGGLL,@A / )0A'3A'U4ARARTg;g5hA'F c t E