Pular para o conteúdo

Não deixe os modelos inventarem números — Vinoo Ganesh, Kepler

Ver no idioma original →

Autoria: AI Engineer · Assistir no YouTube

Vídeo de autoria do canal indicado, não da IANIA; todos os direitos pertencem ao criador. Transcrição, resumo e tradução gerados automaticamente; o conteúdo no idioma original é preservado na versão em idioma original.

Idioma original: inglês

Vídeo original: Do Not Let Models Invent Numbers - Vinoo Ganesh, Kepler · Canal: AI Engineer · 20:42 · Assistir no YouTube

Tópicos: Agentes de IA, Avaliação e benchmarks de IA, Mercados e economia, Privacidade e proteção de dados, RAG, busca e recuperação de informação

Vinod Ganesh explica como a Kepler tenta tornar a pesquisa financeira com IA confiável: o modelo pode localizar e citar números, mas não deve inventá-los nem fazer os cálculos. A arquitetura combina recuperação de fontes, código determinístico, um registro de citações e filtros que removem números sem comprovação. O sistema também integra dados públicos e internos, com controles de acesso e rastreabilidade até os documentos e cálculos originais. Ganesh argumenta que essa abordagem é necessária para tarefas financeiras que exigem precisão numérica e auditoria, embora não seja adequada a usos que dependem de especulação criativa.

  • Em finanças, cada número apresentado deve poder ser validado e rastreado até uma fonte.
  • A arquitetura da Kepler separa as funções: o modelo planeja e localiza informações, enquanto código determinístico realiza os cálculos.
  • Uma citação só é aceita quando pode ser verificada; números sem correspondência são removidos pelo filtro.
  • Os dados extraídos precisam de contexto, como unidade, escala, período e entidade, para que números de documentos não sejam interpretados incorretamente.
  • A busca combina BM25 e busca híbrida, seguida por reclassificação das fontes recuperadas.
  • A Kepler aplica autorização por documento e isolamento entre clientes para evitar vazamentos de dados internos.
  • A empresa afirma que a integração de um LLM com RAG ou um banco vetorial, por si só, não garante precisão numérica nem auditabilidade.
  • A proposta é combinar recuperação verificável e processamento determinístico para ampliar o uso de IA em pesquisa financeira.
Início Capítulo Resumo
00:01 O problema dos números inventados Ganesh apresenta a Kepler e explica por que fontes anexadas depois da geração não bastam para garantir números corretos.
04:08 Arquitetura de citações verificáveis A Kepler extrai dados de filings, registra citações e separa o planejamento do modelo dos cálculos determinísticos.
08:17 Busca, contexto e segurança dos dados A palestra detalha como a busca combina diferentes métodos, contextualiza cada número e restringe o acesso a dados internos.
12:26 Registro de fatos e filtros de citações Cada fato recebe identificadores e metadados, e o sistema remove números que não consegue associar a fontes verificáveis.
16:33 Limites do RAG e futuro da pesquisa financeira Ganesh apresenta resultados de evals, defende uma arquitetura auditável e descreve a possibilidade de combinar IA com análise financeira.

Você nunca mostra a um cliente ou ao seu PM um número que não possa validar ou rastrear explicitamente. — 02:03

O modelo cita os números, mas nunca os escreve. — 04:08

Quando não encontramos uma correspondência, removemos esse número. — 15:00

Fazemos os modelos citar números, não escrevê-los. — 19:41

  • Kepler (empresa): Empresa apresentada por Vinod Ganesh que desenvolve uma plataforma de pesquisa financeira com IA e rastreabilidade de dados.
  • Vinod Ganesh (pessoa): CEO da Kepler e palestrante que descreve a arquitetura da plataforma.
  • TurboPuffer (empresa): Empresa cuja tecnologia de busca é apresentada como componente do ecossistema da Kepler.
  • Anthropic (empresa): Empresa mencionada por ter feito uma análise aprofundada da arquitetura e da tecnologia da Kepler.
  • SEC (empresa): Órgão regulador cujos documentos financeiros públicos, como os filings 10-K e 10-Q, compõem parte do corpus processado pela Kepler.
  • XBRL (conceito): Formato de dados financeiros estruturados que o palestrante considera insuficiente como solução única, em parte devido a erros nos dados.
  • BM25 (conceito): Método de recuperação de informação usado pela Kepler em combinação com busca híbrida.
  • PostgreSQL (ferramenta): Banco de dados usado para reautorizar acessos a documentos e citações durante as consultas.
  • DCF (conceito): Modelo de fluxo de caixa descontado, citado como exemplo de trabalho financeiro que exige informações rastreáveis.

00:01 [música] >> Olá, obrigado por virem. Meu nome é Vinod Ganesh. Sou o CEO da Kepler. Alguns dos meus colegas de equipe também estão aqui. Estou animado por estar aqui para conversar com vocês. A ideia inicial desta sessão surgiu na World’s Fair for AIE, onde falamos, em linhas gerais, sobre a Kepler como um todo e sobre como fazemos o que fazemos.

00:32 E nossa principal conquista até agora — além de várias outras novidades — é que a Anthropic fez uma análise aprofundada da nossa arquitetura e da nossa tecnologia. A maior pergunta que recebi depois da apresentação na World’s Fair foi: bom, como vocês fazem isso, na prática? Então, nossos parceiros e amigos da Turbo puffer me deram esta sessão para falar sobre como usamos o Turbo puffer como componente desse ecossistema mais amplo. E, aproveitando para fazer uma divulgação descarada: Jack e eu vamos dar uma palestra no palco principal daqui a uns 25 minutos. Então, vamos acelerar

01:03 e, se quiserem ouvir sobre investimento fundamental na era da IA, fiquem à vontade para aparecer daqui a 25 minutos. Para falar um pouco sobre… um breve histórico meu. Novamente, sou Vinod. Sou o CEO da Kepler. Comecei minha carreira na Palantir. Liderei a camada de computação lá. Depois, criei minha própria empresa de dados como serviço e, em seguida, fui chefe de engenharia de negócios na Citadel. Então, muito do que aprendemos aqui ao criar a Kepler vem diretamente das experiências de entender como

01:33 criar e harness, ou uma camada de base, ou seja lá qual for a nova palavra da moda, em ambientes bastante exigentes, onde a precisão e a fidelidade são muito importantes. Então, vamos falar um pouco sobre o que a Kepler faz. Sei que já estivemos em muitos lugares. Estamos animados por participar também da publicação do blog da Gemini Force de hoje. Eles lançaram um novo modelo. A premissa central é que um analista, se estiver trabalhando de fato no setor financeiro, nunca apresenta a um cliente ou ao seu

02:03 PM um número que ele não possa validar ou rastrear explicitamente. Então, quando você vê algo como “a receita cresceu 12,4%, chegando a 418,2 bilhões”, esses números precisam estar corretos. O desafio é que todos estamos trabalhando com máquinas de probabilidade. Os LLMs são, em sua essência, máquinas de probabilidade. A mesma coisa que os torna tão criativos e interessantes também os torna muito difíceis de usar em situações de missão crítica. Então, uma coisa natural que vemos são pessoas

02:34 que adicionam fontes depois do fato. Isso é interessante, mas eis o problema que surge quando você simplesmente adiciona uma fonte depois do fato. Primeiro, os LLMs não leem seus documentos de verdade, apesar do que muita gente pensa. O que eles fazem é dividir várias coisas em partes, fazer uma busca semântica e recuperar informações que talvez sejam mais ou menos relevantes, se você tiver sorte. Então, o primeiro grande desafio que muita gente enfrenta é usar a fonte errada. Por exemplo, buscamos informações no Seeking Alpha ou no blog aleatório de apostas YOLO do Venu

03:05 que diz que a Palantir valerá US$ 100.000 por ação. Ou temos a fonte certa e o número errado. Por exemplo, quando você lê um 10K ou um 10Q, imagine que eu vejo o número 17. Bem, a que isso corresponde? São 17 milhões, 17 bilhões, 17 milhões de ienes, 17 milhões de dólares? Os 17 milhões eram a receita dessa empresa no ano de 2023, no 10K que está em 2025? Ou 17 é o número da página?

03:36 Todas essas coisas precisam ser consideradas quando estamos trabalhando em qualquer tipo de ambiente que exija verificabilidade ou precisão numérica. Por fim, há uma parte de cálculo mental. Taxas de crescimento, margens, múltiplos — os modelos não estão de fato fazendo isso. Em alguns casos, eles escrevem código que faz os cálculos, mas os próprios modelos não estão realmente calculando de uma forma que garanta fidelidade e precisão. Então, o que acabamos tendo que desenvolver é uma arquitetura em que o modelo cita os números, mas

04:08 nunca os escreve. Em sua essência, a magia que dá potência à Kepler é: a recuperação encontra a fonte certa — obrigado, TurboPuffer, vamos falar sobre isso. O código faz os cálculos; ou seja, o modelo não escreve os cálculos, mas usa código determinístico predefinido, escrito por nós, humanos. E temos um filtro de pós-processamento. Então, vamos detalhar isso. O que fizemos foi processar todo o corpus de dados da SEC. São mais de 30 milhões de documentos.

04:38 Nossos amigos da TurboPuffer provavelmente vão trabalhar conosco em breve para descobrir como disponibilizar isso para todos vocês. Mas executamos uma etapa de pré-processamento e registramos o que estamos chamando de citações. As citações são, na prática, números determinísticos que extraímos dos documentos oficiais. Coisas como números de receita, itens de uma demonstração de resultados, um balanço patrimonial e informações de MD&A que dizem, em texto escrito por uma pessoa: “Ei, minha receita cresceu 37%”. Há cerca de 20.000 delas.

05:11 Há três fatos individuais extraídos de documentos que identificamos como âncoras citáveis. Isso significa, na prática, que nossa capacidade de dizer de onde veio um número depende de podermos clicar nele e consultar o documento original de onde veio. Quando estamos em produção, recusamos citações que não conseguimos verificar. Ou seja, se eu tiver um número sem citação, o modelo é estruturalmente incapaz de produzir essa resposta. Por fim, o número de citações que

05:41 o filtro extraiu corretamente foi de cerca de 21.000. Vou explicar isso com um pouco mais de detalhes. Para saber como a Kepler funciona e conhecer o trabalho da Anthropic, se quiserem mais informações, pesquisem “Kepler Anthropic” no Google. O que vocês vão encontrar é que os próprios modelos de linguagem fazem o planejamento. O software determinístico lida com cada número ou, de forma mais geral, com cada fato. Então, vamos detalhar isso. Um usuário faz uma pergunta. O LLM cria um plano com conhecimento completo das ferramentas, das etapas determinísticas de recuperação,

06:12 do citation filter, das caixas delimitadoras e de todo esse processo. Agora, vamos tornar isso mais específico. Digamos que eu pergunte: “Qual é o EBITDA ajustado do Google?” Pense no que é necessário para responder a essa pergunta. Primeiro, preciso recuperar um conjunto de fatos de vários 10-Ks, possivelmente de anos diferentes. Preciso descobrir, por exemplo, que novas informações foram divulgadas em uma apresentação para investidores ou em uma teleconferência de resultados, ou se foi publicada uma reapresentação e agora preciso atualizar um número. O modelo pensa em tudo isso

06:44 antes de agir. A partir daí, temos ferramentas que recuperam informações, fazem cálculos, criam tabelas e registram toda essa infraestrutura em um registro de citações. Esse registro nos permite não só fornecer a magnitude ou os metadados associados a números ou fatos, mas também tipificar esses fatos. Um exemplo simples: digamos que eu consulte o 10-K de 2025 da Palantir. Nele, diz que a receita da Palantir em 2023 foi, digamos, de um

07:14 bilhão de dólares. Todos esses números que acabei de mencionar precisam ser contextualizados. Esse bilhão de dólares, embora apareça no 10-K de 2025, precisa ser anotado e tratado como um dado de 2023. Eu disse “bilhão”. Mas, se você consultar um 10-K ou um 10-Q, normalmente verá apenas “um”. A indicação de bilhões fica em algum lugar da tabela, bem distante, solta por ali. Então, precisamos de alguma forma pegar esses objetos complexos e anotá-los para que possamos produzir resultados úteis e rastreáveis que estejam

07:45 de fato corretos. Agora, os modelos gostam de dizer coisas depois do fato. É isso que eles fazem. Então, o que acontece quando um modelo inventa um número que não podemos provar deterministicamente que veio de uma fonte confiável? Precisamos ter uma etapa de pós-processamento para remover essa informação. Fazemos isso e oferecemos rastreabilidade completa na forma mais — vou afirmar isso, e acho que é verdade — granular de qualquer ferramenta no mercado. Isso significa que você pode clicar em tudo na plataforma da Kepler e

08:17 vou mostrar capturas de tela que realmente nos permitem provar que essa arquitetura funciona globalmente. Então, vamos falar um pouco sobre como isso funciona no contexto do Turbo Buffer, que gentilmente nos cedeu o palco para esta conversa. Antes de mais nada, vamos olhar para um 10K. Digamos que vejamos “vendas líquidas totais”. Esse fato, o valor de US$ 416.000. US$ 416.000. É um bom ponto, certo? Não sabemos o que isso significa. Esse número de US$ 416.000 precisa ter fatos associados a ele. Coisas como um valor, uma unidade, um

08:48 escala, ponto. Agora, aqui está o problema. Para quem trabalha nessa área, todo mundo pode dizer que XBRL resolve todos esses problemas. Não precisamos nos preocupar em extrair informações de documentos. Isso seria verdade se o XBRL não estivesse incorreto em uns 10% dos casos. Mas, mais do que isso, quantas pessoas estão olhando apenas para informações públicas quando tomam decisões de investimento? Bem poucas. Elas têm seu próprio One Drive, sua própria sincronização BIP, seus vários memorandos de investimento que prepararam e uma série de informações internas

09:20 Então, para nossa arquitetura funcionar, temos que trabalhar não só com 10-Ks e 10-Qs, mas também com seus dados internos: seu SharePoint, seu Box, seu Ignite, seu One Drive, seu Outlook. >> [fungada] >> Então, estruturamos os dados onde eles já estão estruturados e implementamos a busca onde não estão. Isso nos permite criar um namespace no Turbopuffer que combina a busca BM25 e híbrida com todas as garantias da plataforma Kepler. É assim que fazemos. E provavelmente este é o slide que, eu sei, as pessoas estão

09:51 fotografando. Este é o slide mágico. Não me preocupo em revelar isso porque é um problema muito difícil e muda rapidamente. Então, usamos entropia zero, ou seja, zero embeddings; usamos 1280 dimensões aqui. ANN significa vizinhos mais próximos aproximados, e, junto com BM25, é assim que de fato obtemos informações de todo o nosso namespace. Estou vendo que todo mundo está fotografando. Isso é incrível. >> [risos] >> É assim que de fato obtemos essas informações em todo o nosso namespace. Fazemos reclassificações recíprocas para garantir que recuperamos os documentos certos — geralmente 60 mil ou 60 documentos

10:24 e depois fazemos outro tipo de reclassificação. E esta é uma forma confiável de reclassificação, em que recuperamos as fontes em que confiamos mais do que em outras. Por exemplo, fontes diferentes podem apresentar informações diferentes que afirmam ser a mesma coisa. Uma transcrição de resultados, uma transcrição de uma teleconferência de resultados em que um apresentador diz “minha receita foi este valor”, que não corresponde ao que consta no 10-K, na verdade não é um bug, é uma funcionalidade. São duas informações diferentes que preciso conciliar. Então,

10:54 você também precisa estar ciente disso. Usamos um cross-encoder para fazer a reclassificação e, em seguida, retornamos esse resultado ao modelo. Esta etapa do processo depende de duas coisas. Primeiro, depende da nossa capacidade de recalcular embeddings com extrema facilidade à medida que novas informações chegam. Gerar embeddings não é um processo barato. Se você consegue fazer isso com eficiência, ótimo, mas, se estiver hospedando seu próprio modelo de embeddings, isso se torna — a menos que você esteja hospedando seu próprio modelo de embeddings — muito caro e difícil.

11:26 Então, a estratégia aqui é fazer uma busca ampla e depois reclassificar. O isolamento entre clientes também se torna muito importante. Quando acessamos qualquer tipo de documento, há várias coisas importantes. Por exemplo, seria muito ruim se a equipe 1 da Citadel visse a pesquisa da equipe 2 da Citadel, certo? Então, também precisamos incorporar a segurança no nível do documento. Então, re- A primeira coisa que fazemos é: se você começar naquela consulta do meio que leva ao documento, cada resultado é reautorizado no Postgres, ou seja, nós

11:56 verificamos a citação, o valor e o documento em cada uma dessas operações. Cada etapa de construção adiciona um novo filtro. Assim, vamos construindo filtros complexos ao longo do tempo, que nos permitem garantir que, ao consultar informações e dados, não haja vazamento acidental de dados entre várias fontes diferentes. Só o próprio Auth pode criar um token com escopo definido para gerar essas informações. E, claro, o usuário e o aura vêm de um dispositivo assinado. Então, é assim que garantimos a segurança e é assim que

12:26 garantimos que seu alpha permaneça dentro do ecossistema da sua empresa. Alpha é uma questão interessante, que também podemos discutir num mundo em que todos têm acesso a LLMs. Legal. Agora, como garantimos que um número possa aparecer na plataforma Kepler? Antes de tudo, atribuímos identificadores únicos a cada fato na nossa plataforma. Ou seja, precisamos de identificadores capazes de fazer reconhecimento e resolução de entidades. Cada um desses IDs de origem corresponde a vários metadados de um fato armazenado

12:57 em um mecanismo determinístico. Para mostrar o resultado de uma forma personalizável, precisamos de um valor de exibição. Então, se você quiser que toda a sua plataforma Kepler esteja em milhares de dólares, em ienes ou em qualquer uma dessas moedas, precisamos conseguir fazer o pós-processamento e mostrar o resultado real. E precisamos mostrar como chegamos a ele e de onde veio. Então, a regra invariável na Kepler é que você pode clicar em cada número, em cada fato da plataforma, e ver a fonte exata de onde o obtivemos.

13:28 E é assim que fornecemos números que podem ser citados, são determinísticos e reproduzíveis. Essa também é a garantia de idempotência que podemos oferecer às pessoas. Com essa garantia, podemos executar a mesma consulta repetidamente, em qualquer lugar, e obter os mesmos resultados. Então, é isto que temos de enfrentar. Quando executamos o corpus inteiro de dados, um terço de todas as nossas citações corresponde a cálculos que o modelo não fez. Isso significa que, ao recuperar cada uma dessas

13:59 citações — sejam resultados da web, planilhas ou informações de um anexo de um documento regulatório —, o próprio modelo pode inventar várias coisas com base no seu próprio corpus ou conjunto de treinamento, e é muito, muito difícil contornar isso, especialmente quando se trata de dados históricos. Por exemplo, um número de receita de 2005 provavelmente está no corpus de treinamento do modelo. Mas, se o recuperarmos desse corpus, não podemos garantir que ele foi extraído corretamente, do ano e do escopo certos, nem que conseguimos rastreá-lo até a fonte.

14:29 Então, olhando o conjunto todo, um terço disso são cálculos que o modelo… um terço de todas as citações corresponde a cálculos que os modelos não fizeram. Agora, como fazemos isso em tempo real? À medida que os tokens avançam, enquanto estamos processando, mais ou menos como na inference, fornecemos esses filtros e essas referências a um LLM, que precisa resolvê-los. Pense nisso como o LLM seguindo o ponteiro. Depois, temos um registro em que as próprias fontes são consultadas, e extraímos informações desse registro para

15:00 fornecer rastreabilidade. Agora, o aspecto realmente poderoso é que, quando não encontramos correspondência, removemos o número. É uma decisão bastante rigorosa. Isso significa que seu LLM não será aquele parceiro de reflexão maravilhoso que você esperava, que inventaria coisas, especularia e faria projeções. Isso significa que, neste momento — e vou dizer isso —, a Kepler não é uma ferramenta muito útil se você depende de alucinações do modelo. Ou seja, se você está tentando ser criativo ou, sei lá, escrever conteúdo de marketing, a Kepler não é o produto certo.

15:32 Isso significa que há certos setores financeiros em que a venda oportunista, como no setor bancário, provavelmente não depende da precisão numérica, porque seu trabalho é vender uma oferta. Não é criar um DCF respaldado por informações precisas e rastreáveis. Então, ao conferir nossas fontes, criamos, na prática, um mecanismo de recuperação com verdade fundamental para qualquer corpus de dados, incluindo ações de empresas de capital aberto e também seus próprios dados internos. Agora, isso é frustrante. Significa que a plataforma não pode ser tão magicamente poderosa

16:02 quanto muitas pessoas gostariam. Então, como garantimos que devemos remover uma citação ou tentar corrigi-la? A ideia central é que temos uma etapa de pós-processamento que tenta corrigir a citação. Isso significa, na prática, que, se encontramos informações que não conseguimos rastrear de forma confiável, devemos tentar corrigi-las e fazer uma determinação agentic em tempo real que diga que essas informações vieram desta fonte? Em certos contextos, a resposta é sim: fazemos isso. E provavelmente esse é o segundo ponto desta apresentação.

16:33 que podemos manter um pouco, digamos, meio indefinido, que é como a Kepler protege sua propriedade intelectual. Beleza. Agora, quando de fato executamos essas consultas, há alguns números que acho que vale a pena compartilhar. Porque a maioria das pessoas neste setor está usando um LLM para fazer muita pesquisa financeira e dizendo: “Ótimo, está tudo certo, desde que o RAG seja feito corretamente; então, devo estar pronto para começar.” Nosso filtro, em um sistema nativo, como ao executá-lo no Claude ou no ChatGPT, recusou 10.981

17:05 citações nas nossas evals. Ou seja, cerca de 10.000 — acho que 3.810 delas eram simplesmente números errados. Essa é a coisa mais assustadora de todas para quem trabalha com análise financeira. Isso significa que conectar o Claude, a OpenAI ou qualquer um desses modelos apenas a uma ferramenta nativa de RAG ou a um banco de dados vetorial não é suficiente. Há coisas muito legais que você pode fazer se estiver considerando apenas a busca semântica, e nada além disso. Mas, se estiver lidando com algo que exige precisão numérica e auditabilidade, você não pode confiar

17:36 em plataformas comuns de RAG. Isso é assustador para muitas startups que, na prática, são interfaces para o ChatGPT. Não estou dizendo isso de forma negativa. É a realidade do momento. Então, precisa surgir um novo tipo de arquitetura, que combine auditabilidade e rastreabilidade com elementos determinísticos, como a precisão numérica. Os modelos não fazem matemática. Isso é bem simples e acho que é uma percepção muito importante. Sempre que vemos uma situação em que

18:07 o modelo é forçado a fazer cálculos ou não consegue raciocinar sobre algo, nós simplesmente tornamos isso impossível. Com essa etapa de pós-processamento, o modelo não consegue escrever algo que não possa citar. Ou seja, o modelo é estruturalmente incapaz — e vou tomar cuidado com as palavras —, a plataforma é estruturalmente incapaz de produzir números alucinados. O modelo ainda pode alucinar, e certamente alucina. Beleza. Vamos falar um pouco sobre como é a Kepler. Isto é uma pequena amostra do que nossa plataforma faz quando mostramos

18:37 a rastreabilidade determinística e tudo isso. Fico feliz em explicar melhor, se for útil. Mas, diante de uma pergunta simples como “Qual foi a receita da Apple em 2025 e a que ritmo ela cresceu?”, o fato de cada número ser clicável significa que, ao clicar nele, você vê não só o 10-K, o 10-Q, o 8-K ou a apresentação para investidores de onde ele veio, mas também os cálculos efetivamente realizados nos bastidores. Você vê coisas como: “Usei estes dois números e obtive um aumento de 6,4%”. Tudo fica visível e rastreável na plataforma.

19:09 Então, acho que essa arquitetura vai se tornar o padrão. A oportunidade diante de quem está criando ferramentas de pesquisa financeira ou atuando no campo da IA é limitada, neste momento, pela falta de uma arquitetura que realmente dê suporte aos workflows que vocês querem executar. Hoje, vocês podem configurar agents totalmente gerenciados que tentam pedir ideias com base em informações geradas, mas ainda não conseguem produzir um DCF. Por isso, ainda temos analistas aqui perto ou trabalhando neste momento para extrair informações de formulários S-1 e pegar

19:41 informações de um PDF e colocá-las no Excel. Nosso objetivo é acabar com isso. E quero encerrar com uma coisa muito importante: nossas garantias têm limites. Fazemos os modelos citar os números, não escrevê-los. Verificamos cada citação. Transferimos os cálculos aritméticos para a camada de computação, não para a camada do modelo. Isolamos os usuários e medimos o recall. Isso significa que podemos garantir que a pesquisa baseada em dados de referência que você faz na plataforma seja exclusiva e

20:12 poderosa. Isso não significa que possamos criar um hedge fund completo que substitua todo mundo, pelo menos por enquanto. E vejo uma mudança — falaremos sobre isso daqui a, acho, 30 segundos, quando formos para o próximo lugar —, mas a mudança que estou observando é que as pessoas serão mais quantamentais. Esse é o futuro. Essa é a oportunidade. Quanto mais pudermos usar mecanismos de recuperação exclusivos em conjunto com, é claro, a recuperação determinística, mais chegaremos a um lugar muito poderoso, onde a IA finalmente poderá fazer as coisas que não queremos fazer, em vez de ficar

20:42 ali gerando ideias, que é o que queremos fazer. Com isso, há um apêndice aqui, mas muito obrigado. Agradeço pelo tempo. >> [aplausos]

Transcrição original

[00:01] [music] >> Hey, thanks for coming. My name is Vinod Ganesh. I’m the CEO of Kepler. We have a few of my teammates here as well. I’m excited to be here to chat with you. So, the initial inception of this session comes from the World’s Fair for AIE. Where we discussed at a high level Kepler as a whole and how we do what we

[00:32] do. Um and our big claim to fame right now and there’s a new bunch of other stuff is Anthropic did a full deep dive into our architecture, our technology, and the biggest question that I got after the World’s Fair presentation was well, how do you actually do this? Um so, our partners and friends at Turbo puffer have given me this session to talk about how we use Turbo puffer as a component of this overarching ecosystem. Um also shameless plug, Jack and I are doing a talk on the main stage in about 25 minutes. So, we’re going to power

[01:03] through this and if you want to hear about fundamental investing in the age of AI, uh feel free to come to that 25 minutes from now. Um so, to talk a little bit about uh so, quick background of myself. Um again, I’m Vinod. I’m the CEO of Kepler. Uh began my career at Palantir. I led the compute layer there. Um then built my own data as a service company and then was head of business engineering at Citadel. Um so, a lot of what we learned here in building uh Kepler comes directly from the experiences of understanding how to

[01:33] build and harness or a substrate or whatever the cool new word is in pretty aggressive environments where accuracy and fidelity matter pretty aggressively. So, let’s talk a little bit about what Kepler does. Um I know we’re um we’ve been in a lot of places. We’re excited to be part of Gemini Force um blog post today as well. Uh they’ve a new model out. Um so, the core tenant is um, an analyst, if you’re actually working in finance, you never show a client or your

[02:03] PM a number that they can’t explicitly validate or trace. So, when you see something like revenue grew 12.4% to 418.2 billion, these are actual numbers that need to be correct. The challenge is we’re all operating off of probability machines. LLMs are at their core probability machines. The same thing that makes them so creative and cool is the same thing that makes them very difficult to use in mission-critical situations. So, a natural thing you see is people

[02:34] that attach sources after the fact. Now, this is cool, but here’s the problem that happens when you just attach a source after the fact. First, LLMs don’t actually read your documents, despite what many people think. What they do is they chunk a bunch of things together, they do a semantic search, and they retrieve information that may be semi-relevant, if you’re lucky. So, the first big challenge a lot of people have is we have the wrong source. Like, we’ve pulled information from Seeking Alpha or Venu’s random YOLO blog

[03:05] that says Palantir will be worth $100,000 a share. Or, we have the right source and the wrong number. For example, when you read a 10K or a 10Q, you can imagine a world where I see the number 17. Well, what does that correspond to? Is it 17 million, 17 billion, is it 17 million yen, 17 million dollars? Is it 17 million was the revenue of this company in the year 2023 in the 10K that’s in 2025? Or, is 17 the page number?

[03:36] Like, all of these things are considerations that occur when we’re actually working on any kind of environment that requires verifiability or numerical accuracy. Finally, there’s a piece of mental math. Growth rates, margins, multiples, models are not actually doing Now, in some cases, they write code that does do math, but models themselves are not actually doing math in a way that ensures fidelity and accuracy. So, what we end up having to develop is an architecture where the model sites the numbers, but

[04:08] never writes them. At its core and the magic that powers Kepler is retrieval finds the right source, thank you TurboPuffer, which we’ll talk about. Code does the math, and code meaning the model is not writing the math, but predetermined a deterministic code that we humans have written. And we have a post-processing filter. So, let’s break this down. So, what we did is we processed the entire corpus of SEC data. Now, that’s 30 plus million documents.

[04:38] Um our friends at TurboPuffer will be hopefully working with us fairly soon on how we actually surface this to all of you. Um but we ran a pre-processing step, and we registered what we’re calling citations. And so, citations are effectively the deterministic numerical numbers that we have pulled out of filings. Things like revenue numbers, things like an income statement, a balance sheet, things like MD&A that actually says, “Hey, my revenue grew 37% in human-written text.” There’s about 20,000 of those.

[05:11] There’s three individual filing facts that we’ve revealed as citable anchors, which effectively means our ability to tell you where a number came from comes down to the ability to be able to click on a number and actually reference back a core document where that came from. When we’re running in production, we actually refuse citations that we can’t verify. Meaning, if I have a number that’s not cited, the model is structurally incapable of producing this output. Finally, uh the number of citations that

[05:41] the filter has correctly extracted, we got about 21,000. I’ll I’ll through this in a little bit more detail. How Kepler works and the piece and anthropic, if you want more information Google Kepler anthropic, you can read about is the language models themselves are planning. Deterministic software handles every number or even more generally every single fact. So, let’s break this down. A user asks the question. The LLM then creates a plan with full knowledge of tooling, deterministic retrieval steps,

[06:12] uh citation filter, bounding boxes, and this whole thing. Now, let’s actually make this specific. Let’s say I’m saying, “What is the adjusted EBITDA of, you know, Google?” Think about what’s involved in getting answering that question. I have to first retrieve a bunch of facts across 10-Ks, arguably over potentially different years. I have to figure out, uh you know, in an investor presentation and an earnings call, what new information was disclosed or if a restatement came out and now I have to actually update a number. All of that is what the model thinks

[06:44] through. From there, we have tools that actually retrieve, compute, build tables, and register this entire infrastructure into a citation registry. That citation registry is what allows us to not only give magnitude or metadata associated with numbers or facts, but type those facts. So, a simple example here. Let’s say I do look at Palantir’s 2025 10-K. In there, it says Palantir’s 2023 revenue was, you know, let’s say a

[07:14] billion dollars. All of those numbers that I just said need to be contextualized. That billion dollars, even though it appears in the 10-K from 2025, has to be annotated and treated as 2023’s data point. I said billion. Well, if you looked at a 10-K or a 10-Q, it usually says one. The billions is up in the table somewhere far away floating around. So, we have to somehow take these complex objects and actually give them the annotations to be able to pursue meaningful and traceable output that’s

[07:45] actually correct. Now, after the fact, models like saying stuff. That is what they do. So, what happens when a model actually invents a number that we cannot deterministically prove came from a trusted source? We have to have a post process a post processing step to actually strip this information out. And so, we do this and we give you the full traceability in the most I’m going to claim this and I think it’s true in the most granular form of any tool on the market. Which means you can click on everything in the Kepler platform and

[08:17] I’ll show you screenshots that actually allow us to prove this architecture works globally. So, um let’s talk a little bit about how this works in the realm of Turbo Buffer who’s uh been nice enough to give us a stage to have this conversation. First and foremost, let’s look at a 10K. Let’s say we see total net sales. That fact that $416,000 $416,000 It’s a good point, right? We don’t know what that means. That $416,000 number um needs to have facts associated with it. Things like a value, a unit, a

[08:48] scale, a period. Now, here’s the problem. For those of you who work in this space, everyone can say XBRL solves all this issue. We don’t need to worry about pulling information out of documents. That’s true if XBRL weren’t incorrect like some 10% of the time. But even more so, how many people are just looking at public information when they’re making investment decisions? Fairly few. They have their own One Drive, their own BIP sync, their own various investment memos that they’ve put together and a slew of internal

[09:20] information. So, for our architecture to work, we have to work not just across 10Ks and 10Qs, but also on top of your internal data, your SharePoint, your Box, your Ignite, your One Drive, your Outlook. >> [snorts] >> So, we structure the data where the data structured and then we implement search where it isn’t. And what that allows us to do is create a namespace in Turbopuffer that actually combines both the BM25 and hybrid search with the full guarantees of the Kepler platform. Here’s how we do it. And this is probably the slide I know people are

[09:51] taking photos. This is the magical slide. I’m not worried about revealing this because this is a very hard problem and it moves quickly. So we use zero entropy so zero embeddings we use 1280 dimensions here. ANN is approximate nearest neighbors plus BM25 is how we actually grab information across I look at everyone’s taking photos. This is amazing. >> [laughter] >> This is how we actually grab this information across our namespace. We do do reciprocal re-rankings to actually make sure that we pull the right usually 60K or 60 documents back

[10:24] and then we do another form of re-ranking. And this is a trusted form of re-ranking where we pull back the sources that we actually trust more than others. For example, different sources will have different pieces of information that claim to be the same thing. An earnings transcript an earnings call transcript where a presenter says my revenue was this that disagrees with exists in the 10K is actually a it’s not a bug it’s a feature. There’s two different pieces of information I have to actually deconflict across these. So

[10:54] you need to be aware of that as well. We use a cross encoder to actually do the re-ranking and then we return that result to the model. This step in this process is predicated on two things. It’s predicated on one our ability to rerun embeddings as new information comes in incredibly cheaply. So generating embeddings is not a cheap process. If you can do it and you can do it efficiently great but if you’re hosting your own embeddings model it becomes unless you’re hosting your own embeddings model it becomes really expensive and very difficult.

[11:26] So strategy here is we search wide then we re-rank. Now there’s tenant isolation that also becomes really important. Now, when we actually hit any kind of a document, we have a bunch of different pieces that are important. For example, it would be very unfortunate if Citadel Desk 1 saw Citadel Desk 2’s research, right? So, we have to have security built into the document level as well. So, re- The first thing we do is if you start at that middle query that goes to the document, um every hit is reauthorized in Postgres, meaning we

[11:56] check the citation, the value, the document across every one of these computations. Every builder adds a new filter. So, we’re building up these complex filters over time that actually allow us to make sure that as we’re querying information and querying data, we’re not leaking data inadvertently across a bunch of different sources. Only Auth itself can create a scoped token to actually create this information. And of course, the user and aura come from a signed device. So, this is the way that we ensure security, and this is the way that we

[12:26] ensure your alpha stays within your firm’s ecosystem. Alpha’s an interesting question which we can talk about in a world where everyone has access to LLMs as well. Cool. Now, how do we make sure a number can appear in the Kepler platform? First and foremost, we assign unique identifiers to each fact in our platform. Meaning, we need to have identifiers that both can do entity recognition and entity resolution. Each one of these source IDs corresponds to a bunch of metadata in a fact stored

[12:57] in a in a deterministic engine. In order for us to show you the output in a way that’s customizable, we need to have a display value. So, if you want your whole Kepler platform in thousands of dollars or in yen or in any of these, we need to be able to post process and show you the actual output. And we have to show you how we got it and where we got it from. So, the invariant in Kepler, you can click on every number, every fact in the platform and see the actual source that we got it from.

[13:28] And that’s how we actually give you numbers that are truly citable, deterministic, and reproducible. This is also the item potent guarantee that we’re able to give to people. By having this guarantee, we can run the same query over and over again wherever and get the same results. So, here is what we uh have to deal with. When we ran this whole corpus of data, um a third of all of our citations are the math that the model didn’t do. What that means is pulling every one of

[13:59] these citations out, whether it’s web results, spreadsheets, whether it’s coming from a filing exhibit, the model itself can make up a bunch of things from its own corpus or its own um training set that are really, really difficult to work around, especially when you go to historical data. For example, looking up a revenue number from 2005 likely lives within the model’s training corpus. But it if we retrieve it from that corpus, we can’t guarantee that it was pulled correctly from the right year and right scope, and that we can actually trace it back.

[14:29] So, just off of a whole, a third of this are math that the model that a third of all citations are the math the models did not do. Now, how do we actually do this live? As tokens move forward as we’re flowing kind of like we’re doing inference, um we give these filters and these references to an LLM that has to actually resolve these. Think of this as the LLM dereferences the pointer. We then have a registry where the sources themselves are looked up, and we pull information out of that registry to

[15:00] give you the traceability. Now, the really powerful thing here is when we don’t have a match, we strip that number. That’s a very aggressive thing to do. It means your LLM will not be that wonderful thought partner that you thought it would be, where it would make up, speculate, and project. This means at this moment, and I’ll say this, Kepler’s not a super useful tool if you rely on model hallucinations. Meaning if you’re trying to be creative or you’re trying to I don’t know, write marketing content, Kepler’s not the right product to use.

[15:32] That means there are certain industries in finance where opportunistically selling, like banking, probably don’t rely on numerical accuracy because your job is to sell an offering. It’s not to create a DCF that’s backed by accurate traceable information. So, by checking against our sources, we’ve effectively created a ground truth retrieval engine across any corpus of data, including public equities as well as your own internal data. Now, this is annoying. This means the platform cannot be as magically powerful

[16:02] as many people want it to be. So, how do we actually ensure whether we should strip a citation or whether we should try to repair it? And so, the core insight here is we have a post-processing step that actually tries to do a citation repair. Which effectively means if we find information that we can’t reliably trace, should we try to repair that and do an on-the-fly agentic determination that says this information came from this source? The answer is in certain spaces we actually do do that. And that’s probably the second piece of this presentation

[16:33] that we can keep a little bit, um, kind of like wishy-washy, which is how Kepler maintains its IP. Cool. Um, now, when we actually run these queries, there are some numbers that I think are worthwhile to share. Because most people in this industry right now are wrapping a lot of financial research with an LLM and they’re saying, “Great, everything is right as long as things are, you know, ragged properly, I should be good to go.” So, our filter across native, just like running it on Claude or ChatGPT, um, refused 10,981

[17:05] citations from our evals. Meaning 10,000 about, I guess, 3,810 of these were just straight-up wrong numbers. This is the scariest thing ever if you live in financial analytics. This means hooking up Claude to uh, uh or open AI or any of these models to just a native rag tool or a vector database actually isn’t enough. Now, there’s really cool things that you can do if you’re looking at just semantic search and that’s it. But if you’re looking at anything that requires numerical accuracy and auditability, you actually can’t trust

[17:36] regular rag platforms. This is a scary thing for a lot of startups that are effectively chat GPT wrappers. I’m not saying that in a negative way. It’s the reality of where we are right now. So, a new kind of architecture has to emerge and that architecture has to combine both the auditability and traceability with the deterministic elements of of course like numerical accuracy. Um models don’t do math. This is pretty simple and I think it’s actually pretty critical um insight here. Uh anytime that we see some kind of situation where

[18:07] the model is uh forced to do math or if it can’t reason through something, we effectively make that impossible. By having that post post processing step, the model can’t actually write something it can’t cite. Meaning the model is structurally incapable and I’ll be careful. The platform is structurally incapable of producing hallucinated numbers. The model can still hallucinate and it definitively does. Cool. Let’s talk a little bit about what Kepler looks like and this is a tiny sliver of what our platform does when we

[18:37] show the deterministic traceability and all that. Um happy to chat through uh this as if it’s if it’s useful. But a simple question like Apple’s 2025 revenue and how fast it grew, every number being clickable means by clicking on these, you see not only the 10-K or the 10-Q or the 8-K or the investor presentation that it came from, but you see the actual calculations that are done behind the scenes. Things like I did these two numbers and I have a 6.4% um increase all becomes present and traceable on the platform.

[19:09] So, this architecture I think will become the standard. Um, the opportunity in front of people that are building financial research tools or operating in the realm of AI is right now limited by the lack of architecture that actually supports the workflows you want to do. You can set up fully managed agents right now that try to ask for ideas based on, you know, generated information, but you still can’t produce a DCF, which is why we still have analysts down the street from here or working right now on stripping information out of S-1s and taking

[19:41] information from a PDF and putting it into Excel. Our goal is to end that. And so, um, I do want to end on a kind of one very important thing, which is our guarantees do end somewhere. We make models site numbers, not write them. We verify every citation. Uh, we push arithmetic to the compute layer, not to the model layer. We isolate tenants and we measure recall. This means we can actually guarantee that the ground truth research that you do in your platform is unique and

[20:12] powerful. It does not mean that we can create a full-scale hedge fund that’s replacing everyone, at least right now. And so, I see the move, and we’ll talk about this in, I guess, 30 seconds as we go, uh, to the next place, but, um, the move that I’m seeing is folks will be more quantamental. This is the future. This is the opportunity. The more that we can use unique retrieval mechanisms in conjunction with, of course, deterministic retrieval, um, we’ll end up in a really powerful place where AI can finally do the stuff that we don’t want to do instead of sitting

[20:42] there and doing the ideating that we do want to do. With that, um, there’s an appendix here, but thank you so much. Uh, I appreciate the time. >> [applause]