Idea

Recuperar el fragmento correcto y circular hasta sus vecinos son dos capacidades distintas

Info

Escrito originalmente en francés. Traducido por IA — se ha preservado el sentido, no la prosa.

Idea principal

Un motor de búsqueda vectorial conectado a un repositorio de código responde bien a "¿dónde está escrita la regla que rechaza la modificación de un elemento anulado?". Trae los fragmentos más próximos a la pregunta, incluidos los que no emplean ninguna de sus palabras, y lo hace igual de bien en una gran masa documental que en un repositorio voluminoso.

Recupera. No navega. Y la pregunta siguiente es casi siempre una pregunta de vecindad: qué módulo llama a este, qué otra regla trata sobre el mismo objeto, qué evento desencadena el que acabas de leer, qué pantalla expone ese comportamiento. El motor no responde a eso, y no es un defecto de ajuste: su métrica es la proximidad de sentido entre un fragmento y la pregunta planteada, nunca la relación entre dos elementos del corpus.

Dos capacidades cubren ese desplazamiento, y no se parecen. Un grafo semántico relaciona explícitamente los conceptos, los módulos y los eventos, y permite pasar de un nodo a sus vecinos declarados. El recorrido del sistema de archivos — listar el directorio donde se encontró el fragmento, abrir los archivos adyacentes, leer la estructura local — es más rústico y a menudo más eficaz, porque el árbol de directorios ya sostiene una parte de la relación sin que nadie haya tenido que declararla.

Un dispositivo construido solo sobre la búsqueda da, pues, respuestas exactas sobre lo que se ha sabido preguntar, y mudas sobre lo que estaba justo al lado.

Por qué es importante

Esto explica un fracaso frecuente: conectar un modelo a un repositorio Git con un índice vectorial y constatar que las respuestas siguen siendo superficiales. El problema no es la calidad de la búsqueda, es que solo está presente una de las dos capacidades.

También da un criterio de evaluación que no trata sobre el primer resultado. Un dispositivo de consulta no se juzga por la pertinencia del fragmento que trae, sino por lo que sabe hacer después: alcanzar aquello que quien pregunta no sabía que debía preguntar.

Matices y límites

La distinción no es una jerarquía. En un corpus pequeño o muy homogéneo, recuperar basta: los vecinos están en el mismo archivo, y el desplazamiento se hace al leer.

Y circular nunca reemplaza a recuperar. Un grafo sin punto de entrada no sirve de nada; es la búsqueda la que aporta el nodo de partida, y una mala entrada hace explorar una vecindad sin relación con la pregunta.

Por último, las dos capacidades no envejecen igual. Un árbol de archivos siempre está al día, ya que es el repositorio; un grafo de relaciones declaradas es un artefacto más, que diverge en cuanto el código se mueve sin que el grafo se reconstruya.

Preguntas abiertas

  • ¿Qué determina el punto de parada de un recorrido de vecindad — cuántos saltos antes de que el contexto traído deje de esclarecer la pregunta y empiece a ahogarla?
  • En un repositorio que cambia a diario, ¿en qué momento reconstruir un grafo de relaciones cuesta más de lo que hace ganar frente a un simple recorrido de directorios?