La mayoría de los sistemas de texto a SQL tratan la tarea como una traducción. Feyn AI (startup respaldada por YC) lo reformula en torno a la inspección. El equipo de Feyn lanzó SQRL, una familia de modelos que convierten preguntas en lenguaje natural en SQL. En lugar de generar una consulta inmediatamente, SQL puede inspeccionar primero la base de datos. Esto le permite resolver ambigüedades y escribir solo consultas que los datos realmente admitan.
El equipo de Feyn informa que el buque insignia SQRL-35B-A3B alcanza una precisión de ejecución del 70,6% en BIRD Dev. Esa cifra supera a Claude Opus 4.6 con un 68,77% según la misma evaluación. Tres puntos de control se envían abiertamente en Hugging Face: SQRL-4B, SQRL-9B y SQRL-35B-A3B.
Una consulta puede ser SQL válida y aun así ser incorrecta
La conversión de texto a SQL a menudo se describe como un problema de traducción, pero ese marco pasa por alto la parte más difícil. Una consulta puede ser SQL perfectamente válida y aun así devolver una respuesta incorrecta. Puede unir tablas incorrectas, leer una columna ambigua incorrectamente o filtrar valores que no existen. Ninguno de estos errores genera un error, por lo que ninguno se detecta únicamente mediante la ejecución.
La información del esquema no los impide. Un esquema enumera tablas, columnas, tipos y, a veces, relaciones. No revela si un condado está almacenado como Alameda, Condado de Alameda o ALAMEDA. No puede decirle qué combinación produce filas duplicadas.
El punto de referencia BIRD hace que estos fallos sean mensurables. Sus bases de datos abarcan dominios reales y contienen valores imperfectos, columnas ambiguas y relaciones no triviales. Un sistema se califica ejecutando su SQL y comparando las filas devueltas con un resultado de referencia. Para los lenguajes de consulta, la corrección sintáctica no es suficiente. La idea central de Feyn es que la información que falta ya se encuentra dentro de la base de datos. La modelo simplemente necesita permiso para solicitarlo.
SQRL inspecciona antes de responder
SQL recibe una pregunta, su esquema y evidencia opcional sobre la base de datos. Si ese contexto es suficiente, devuelve una consulta de inmediato. Si algo sigue siendo ambiguo, ejecuta consultas de solo lectura y utiliza las filas devueltas para redactar su respuesta final. La decisión de inspeccionar es circunstancial. Contar filas en una sola tabla no requiere búsqueda, por lo que SQRL responde directamente.
La interacción utiliza dos acciones distintas. Un bloque solicita una observación de la base de datos. Un bloque se compromete con la consulta final. El arnés ejecuta consultas de exploración en modo de solo lectura y devuelve sus filas dentro de las etiquetas. SQRL puede inspeccionar hasta cinco veces, aunque la mayoría de las preguntas finalizan en menos pasos.
El siguiente explicador analiza ambos comportamientos en ejemplos reales y luego compara la familia con los modelos de frontera en BIRD Dev.
‘ + s.etiqueta + ‘
‘ + ‘
‘ + s.desc + ‘
‘ + ” + s.código + ”; trace.appendChild(div); setTimeout(function(){ div.classList.add(‘mostrar’); resize(); }, 350 * (idx+1)); }); setTimeout(function(){ runbtn.disabled = false; runbtn.textContent=”Replay”; resize(); }, 350 * (ex.steps.length + 1)); } document.getElementById(‘runbtn’).addEventListener(‘hacer clic’, ejecutar); // —- pestañas —- Array.prototype.forEach.call(root.querySelectorAll(‘.tab’), function
{ name:”SQRL-35B-A3B”, val:70.60, sqrl:true },
{ name:”SQRL-9B”, val:69.80, sqrl:true },
{ name:”SQRL-4B”, val:68.80, sqrl:true },
{ name:”Claude Opus 4.6″, val:68.77, sqrl:false },
{ name:”Claude 4.5 Sonnet”, val:67.34, sqrl:false },
{ name:”Qwen3-Coder-480B-A35B”, val:66.17, sqrl:false },
{ name:”GLM-4.7″, val:63.82, sqrl:false },
{ name:”DeepSeek-R1″, val:61.67, sqrl:false },
{ name:”Kimi-K2-Thinking”, val:60.63, sqrl:false }
]; var chartDrawn = falso; función drawChart(){ var gráfico = document.getElementById(‘gráfico’); gráfico.innerHTML = ”; bench.forEach(function(b){ var fila = document.createElement(‘div’); fila.className=”barra-fila”; fila.innerHTML = ‘
‘ + b.nombre + ‘
‘ + ‘
‘; chart.appendChild(fila); }); // animar anchos (escala: 0-100 mapas hasta el recorrido completo) setTimeout(function(){ Array.prototype.forEach.call(chart.querySelectorAll(‘.bar-fill’), function(f, i){ f.style.width = bench[i].val + ‘%’; }); setTimeout(cambiar tamaño, 1100); }, 60); chartDrawn = verdadero; } // —- cambio de tamaño automático (altura del componente + 40, por regla interna) —- función resize(){ try { var h = root.offsetHeight + 40; parent.postMessage({ tipo:’sql-resize’, altura: h }, ‘*’); } catch(e){} } window.addEventListener(‘cargar’, función(){ render(); cambiar tamaño(); }); window.addEventListener(‘cambiar tamaño’, cambiar tamaño); setTimeout(cambiar tamaño, 300); })();