Ir al contenido

Búsqueda RAG

Al pulsar Ctrl+K, todos los rastros de trabajo del espacio de trabajo se reúnen en un único cuadro de búsqueda. Lo encuentra por significado aunque las palabras no coincidan exactamente, y como los embeddings se calculan todos en local, el código no sale al exterior.

FuenteObjeto de indexaciónPregunta de ejemplo
codeArchivos de texto·código (más de 40 extensiones)“función que guarda la contraseña”
dbDefiniciones de tablas·vistas·índices·triggers·rutinas”vista que suma el importe de los pedidos”
gitMensajes de commit·diff”commit que corrigió el bug de codificación la semana pasada”
chatContenido de las conversaciones del Chat con IA”el método de despliegue que le pregunté ayer a la IA”
work_eventRegistro de actividad de los paneles (abrir·editar·ejecutar consulta, etc.)“el archivo de migración que abrí hace poco”
docArchivos Markdown·documentos”documento del procedimiento de autenticación de la API”

No solo el código, sino también el contexto de trabajo del tipo “¿cómo arreglé esa tabla la semana pasada?”.

Una sola consulta se ejecuta simultáneamente por dos vías.

  1. Búsqueda vectorial — KNN con sqlite-vec. Encuentra resultados de significado similar aunque las palabras sean distintas.
  2. Búsqueda por palabras clave — BM25 con FTS5. Fuerte para identificadores·mensajes de error exactos.

Ambos resultados se fusionan con RRF (Reciprocal Rank Fusion) para asignar el ranking final. Como una vía complementa los resultados que la otra pasó por alto, se obtienen resultados consistentemente mejores que con un solo método. Las rutas deprecated / legacy / .bak se penalizan automáticamente.

Si quieres elevar aún más la calidad de la búsqueda, puedes activar el reranker.

  • Los 40 principales candidatos los reordena un modelo cross-encoder (bge-reranker-base, multilingüe que incluye coreano) cotejándolos 1:1 con la consulta.
  • Peso por recencia — bonificación a los resultados de los últimos 30 días, atenuación de los fragmentos de más de 1 año.
  • Peso por número de citas — cuantas más veces se haya citado realmente en respuestas de la IA, más arriba aparece.

Los archivos de código no se cortan simplemente cada N líneas. Con parsing AST de tree-sitter se dividen los fragmentos en los límites de funciones·clases·métodos (6 KB por defecto), de modo que el resultado de búsqueda salga como una unidad semántica completa y no como “media función”.

Lenguajes admitidosMétodo de chunking
Python · JavaScript · TypeScript · TSXAST de tree-sitter
C# · Java · Go · DartAST de tree-sitter
Otros lenguajes · archivos enormesFallback seguro por líneas

El modelo de embeddings se ejecuta dentro de la app basándose en transformers.js. No necesita clave de API ni transmisión por red. La primera vez descarga el modelo una sola vez y, después, funciona incluso sin conexión.

ModeloDimensionesTamañoNotas
multilingual-e5-small384unos 110 MBPredeterminado, rápido
multilingual-e5-base768unos 280 MBRecomendado para coreano — la calidad de búsqueda mejora notablemente
Familia MiniLM · bge38490~130 MBLigero, para proyectos mayoritariamente en inglés
embeddinggemma-300m768unos 600 MBBeta
  1. Pulsa Ctrl+K para abrir el cuadro de búsqueda unificada.

  2. Escribe en lenguaje natural.

    la parte que guarda la contraseña de SSH
    el bug de codificación que arreglé la semana pasada
    el commit que añadió la columna amount a la tabla orders
  3. Acota el ámbito con los chips de filtro de fuente (code · db · git · chat · work_event · doc).

  4. Al hacer clic en una tarjeta de resultado, su contenido se despliega, y al pulsar el botón ▶ vas al archivo·ubicación original.

El Chat con IA busca automáticamente el índice con la herramienta workspace_search antes de que el usuario envíe un mensaje. Trae como contexto código relevante·conversaciones pasadas·esquema de BD para aumentar la precisión de la respuesta. No requiere ninguna acción adicional, y los archivos citados se muestran en la sección “Referencia:” bajo la respuesta.

  • Cuando se detecta un guardado de archivo o un cambio en el esquema de BD, se indexa de forma incremental en segundo plano.
  • Selección de modo — en la configuración del chat elige entre eco / balanced / fast para equilibrar el uso de CPU y la velocidad de reflejo.
  • Panel de estado — en configuración del chat → pestaña Estado del índice RAG consultas en tiempo real el número de fragmentos por fuente y la cola de indexación.

Respeta .gitignore automáticamente y las rutas siguientes se excluyen por defecto.

node_modules/ .git/ dist/ build/

Si necesitas exclusiones adicionales, escríbelas en el archivo .termeditignore de la raíz del proyecto (sintaxis gitignore). Los objetos de BD se excluyen con patrones glob en la sección [db].

# ejemplo de .termeditignore
vendor/
*.generated.ts
coverage/
[db]
*.tmp_*
BACKUP_*

Al guardar los patrones, los fragmentos ya indexados que correspondan también se limpian de inmediato.

Si en un espacio de trabajo antiguo el índice se ha hinchado, usa las herramientas de limpieza del panel.

HerramientaRol
Orphan ScanElimina los fragmentos residuales de archivos borrados
Pattern PurgeElimina en lote por patrón de ruta (ej.: dist/**)
Stale CleanupLimpia fragmentos que hace tiempo que no se citan
Reintentar fallosReprocesa los elementos con indexación fallida

El índice se guarda como un archivo SQLite por espacio de trabajo (workspace.sqlite). Si mueves la carpeta del espacio de trabajo, se reindexa de nuevo.

El tamaño es asumible. Para 10 000 fragmentos, los datos vectoriales ocupan unos 15 MB.

El cuadro de búsqueda no se abre → Usa Ctrl+K. Si el foco de entrada entra en conflicto con otro atajo, haz clic una vez en un área vacía y vuelve a intentarlo.

No hay resultados o son extraños → Justo tras la primera ejecución, los resultados pueden estar vacíos hasta que se complete la carga·descarga del modelo. Comprueba el progreso en el panel de estado de indexación. Si hay mucho ruido, excluye las rutas innecesarias con .termeditignore.

Siguen saliendo resultados antiguos → Pestaña de estado del índice → ejecuta Orphan Scan o Stale Cleanup. Si acabas de cambiar de modelo, espera a que se complete la reindexación.

¿Qué pasa con el índice existente si cambio el modelo de embeddings? → Al cambiar de modelo, el índice existente se elimina automáticamente y se reindexa desde cero. Según el tamaño del proyecto, puede tardar varios minutos.

¿Se indexan también las carpetas remotas (SSH/SFTP)? → Aún no se admite. En las carpetas de proyecto remotas, la búsqueda RAG de código queda desactivada y la IA explora directamente con las herramientas file_list_dir + file_read.

La IA cita código de forma incorrecta en sus respuestas → Ajustar los filtros de fuente o excluir archivos ruidosos con .termeditignore mejora la calidad de las citas. Si activas la opción de reranking, los fragmentos poco relevantes se relegan.


Para saber cómo usarlo junto con otras funciones, consulta los documentos Chat con IA, Editor y Cliente de BD.