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.
6 fuentes de búsqueda
Sección titulada «6 fuentes de búsqueda»| Fuente | Objeto de indexación | Pregunta de ejemplo |
|---|---|---|
code | Archivos de texto·código (más de 40 extensiones) | “función que guarda la contraseña” |
db | Definiciones de tablas·vistas·índices·triggers·rutinas | ”vista que suma el importe de los pedidos” |
git | Mensajes de commit·diff | ”commit que corrigió el bug de codificación la semana pasada” |
chat | Contenido de las conversaciones del Chat con IA | ”el método de despliegue que le pregunté ayer a la IA” |
work_event | Registro de actividad de los paneles (abrir·editar·ejecutar consulta, etc.) | “el archivo de migración que abrí hace poco” |
doc | Archivos 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?”.
Motor de búsqueda híbrido
Sección titulada «Motor de búsqueda híbrido»Una sola consulta se ejecuta simultáneamente por dos vías.
- Búsqueda vectorial — KNN con sqlite-vec. Encuentra resultados de significado similar aunque las palabras sean distintas.
- 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.
Reranking (opt-in)
Sección titulada «Reranking (opt-in)»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.
Chunking que conoce el código
Sección titulada «Chunking que conoce el código»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 admitidos | Método de chunking |
|---|---|
| Python · JavaScript · TypeScript · TSX | AST de tree-sitter |
| C# · Java · Go · Dart | AST de tree-sitter |
| Otros lenguajes · archivos enormes | Fallback seguro por líneas |
Modelo de embeddings local
Sección titulada «Modelo de embeddings local»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.
| Modelo | Dimensiones | Tamaño | Notas |
|---|---|---|---|
multilingual-e5-small | 384 | unos 110 MB | Predeterminado, rápido |
multilingual-e5-base | 768 | unos 280 MB | Recomendado para coreano — la calidad de búsqueda mejora notablemente |
| Familia MiniLM · bge | 384 | 90~130 MB | Ligero, para proyectos mayoritariamente en inglés |
embeddinggemma-300m | 768 | unos 600 MB | Beta |
Cómo usarlo
Sección titulada «Cómo usarlo»-
Pulsa
Ctrl+Kpara abrir el cuadro de búsqueda unificada. -
Escribe en lenguaje natural.
la parte que guarda la contraseña de SSHel bug de codificación que arreglé la semana pasadael commit que añadió la columna amount a la tabla orders -
Acota el ámbito con los chips de filtro de fuente (code · db · git · chat · work_event · doc).
-
Al hacer clic en una tarjeta de resultado, su contenido se despliega, y al pulsar el botón ▶ vas al archivo·ubicación original.
Integración automática con el Chat con IA
Sección titulada «Integración automática con el Chat con IA»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.
Gestión de la indexación
Sección titulada «Gestión de la indexación»Indexación automática
Sección titulada «Indexación automática»- 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/fastpara 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.
Patrones de exclusión
Sección titulada «Patrones de exclusió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 .termeditignorevendor/*.generated.tscoverage/
[db]*.tmp_*BACKUP_*Al guardar los patrones, los fragmentos ya indexados que correspondan también se limpian de inmediato.
Herramientas de limpieza del índice
Sección titulada «Herramientas de limpieza del índice»Si en un espacio de trabajo antiguo el índice se ha hinchado, usa las herramientas de limpieza del panel.
| Herramienta | Rol |
|---|---|
| Orphan Scan | Elimina los fragmentos residuales de archivos borrados |
| Pattern Purge | Elimina en lote por patrón de ruta (ej.: dist/**) |
| Stale Cleanup | Limpia fragmentos que hace tiempo que no se citan |
| Reintentar fallos | Reprocesa los elementos con indexación fallida |
Ubicación y tamaño del índice
Sección titulada «Ubicación y tamaño del índice»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.
Preguntas frecuentes
Sección titulada «Preguntas frecuentes»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.