WEBVTT
NOTE
Transcription provided by Podhome.fm
Created: 10/07/2026
00:15:00Duration: 3751.206
Channels: 1
1
00:00:05.120 -->
00:00:08.000Hello, and welcome to the AI Engineering Podcast,
2
00:00:08.000 -->
00:00:12.160your guide to the fast moving world of building scalable and maintainable AI systems.
3
00:00:19.605 -->
00:00:35.980Your host is Tobias Macey, and today I'm interviewing Ofer Mendelevitch about how to evaluate your RAG systems when you have incomplete or changing data to grade against. So, Ofer, can you start by introducing yourself? Hi. Thanks, Tobias. Great to be here. I was a machine learning and kind
4
00:00:35.980 -->
00:00:40.620of recently deep learning leader in here in the Bay Area for the last maybe two decades.
5
00:00:41.135 -->
00:00:43.855I actually started my career in machine learning.
6
00:00:44.175 -->
00:00:47.695I had a fun story to tell about this, which is when I started,
7
00:00:48.094 -->
00:00:53.454Naive Bayes was a leading algorithm at the time. I don't know if anybody in the audience know what that is,
8
00:00:54.110 -->
00:00:57.230but it's probably the first machine learning algorithm ever
9
00:00:57.629 -->
00:00:59.230created that I've known of.
10
00:00:59.550 -->
00:01:02.589And nobody is using it today, of course, because it's so old.
11
00:01:02.910 -->
00:01:10.284But, yeah, so I've been I've been around for a while from the time that we called it machine learning to data science to now we call everything AI.
12
00:01:10.845 -->
00:01:12.284In addition to that, I was
13
00:01:13.244 -->
00:01:28.700sort of in engineering too. So part of the engineering stack, was VP of engineering, a couple of startups in Silicon Valley. So I've seen a lot of the ups and downs of the Valley over the last two decades. Yeah. More recently, I've been, involved in, some efforts in also developer relations
14
00:01:29.020 -->
00:01:31.740and, for a company called Band and other companies,
15
00:01:32.375 -->
00:01:33.015And
16
00:01:33.255 -->
00:01:38.055wrote a book actually with O'Reilly recently called Hands on Rag for Production,
17
00:01:38.295 -->
00:01:44.455which I think we're going to talk a little bit about today too, that kind of tries to summarize all of my experiences in
18
00:01:45.070 -->
00:01:48.350bringing AI systems, Rag, and today agents
19
00:01:48.590 -->
00:01:52.829into production and what that means and all the challenges that are, part of that.
20
00:01:53.869 -->
00:02:05.045So you mentioned that you've been in the space for a long time. I'm wondering if you can just start by giving a bit of an overview of how you first got started in the overall field of what used to be machine learning and has now been
21
00:02:05.365 -->
00:02:08.485subsumed by AI and what it is that has kept you here.
22
00:02:09.125 -->
00:02:11.845Yeah. So, I actually started with,
23
00:02:12.165 -->
00:02:16.725machine learning in my first startup, which was founded in year 2,000,
24
00:02:16.410 -->
00:02:19.850more or less. And as I mentioned earlier, we did a
25
00:02:20.410 -->
00:02:26.570very elaborate system. It's funny to think about it these days that did the document classification.
26
00:02:27.050 -->
00:02:30.275It was called Quiver. The company later was acquired by
27
00:02:30.834 -->
00:02:32.595another company called Inktomi.
28
00:02:32.595 -->
00:02:34.995But at the time, it was all new. Like,
29
00:02:35.875 -->
00:02:38.115people who did machine learning were only PhDs.
30
00:02:38.194 -->
00:02:39.875That's the only way you could do it.
31
00:02:40.435 -->
00:02:42.995You had to have these very specialized expertise.
32
00:02:43.340 -->
00:02:46.140But that's how I got started. I started a company and we required
33
00:02:46.780 -->
00:02:47.980this classification
34
00:02:47.980 -->
00:02:49.500classification engine
35
00:02:49.739 -->
00:02:50.460to
36
00:02:50.540 -->
00:02:54.780do our product, to implement our product. And I just learned on the job, essentially.
37
00:02:56.055 -->
00:03:00.215Then this, of course, was very interesting to me. So I kept in this field.
38
00:03:00.455 -->
00:03:04.295Then things evolved into, you know, decision trees and
39
00:03:04.295 -->
00:03:06.055what we know now as XGBoost
40
00:03:06.055 -->
00:03:06.695and,
41
00:03:07.095 -->
00:03:09.735you know, all these other algorithms that evolved over the years.
42
00:03:10.480 -->
00:03:11.120And
43
00:03:11.760 -->
00:03:12.560around
44
00:03:13.520 -->
00:03:14.160twenty
45
00:03:14.720 -->
00:03:16.160eighteentwenty nineteen,
46
00:03:16.480 -->
00:03:21.360I actually had my first meeting with the LM space. So a friend of mine who
47
00:03:21.600 -->
00:03:24.160used to work at OpenAI in the past
48
00:03:24.435 -->
00:03:29.395told me to take a look at this, and it was... I was very fortunate that I had this friend. And
49
00:03:31.075 -->
00:03:33.555this is the time when GPT was GPT one,
50
00:03:33.795 -->
00:03:36.515and GPT two just came out early twenty nineteen.
51
00:03:37.090 -->
00:03:42.930For those of you who haven't seen that, there's a whole set of articles published by OpenAI
52
00:03:43.010 -->
00:03:49.650on those years. It's really funny because they... Well, funny and interesting. They released GPT two in three phases.
53
00:03:50.315 -->
00:03:52.795They had the small, the medium, and the large,
54
00:03:53.355 -->
00:03:53.835and
55
00:03:54.475 -->
00:03:57.835and they had extra large. So they did not... They decided not to release. Now
56
00:03:58.235 -->
00:04:00.155I'm saying it's funny because
57
00:04:00.475 -->
00:04:02.875the extra large, which was deemed very dangerous,
58
00:04:03.370 -->
00:04:05.050was about 1,500,000,000
59
00:04:05.050 -->
00:04:11.930parameters, which is kind of laughable in today's terms. But I think they had the right idea of thinking about alignment and thinking about,
60
00:04:12.330 -->
00:04:14.490protecting because nobody knew what this would do.
61
00:04:15.225 -->
00:04:20.505Anyway, I I used this, for another startup that I started at the time in health care.
62
00:04:20.985 -->
00:04:22.425We used GPT two.
63
00:04:22.825 -->
00:04:32.480We trained it on health care data and fine tune it. Yeah. And that's kinda been my journey from the early days until today. In the process, of course, I've learned a lot about
64
00:04:33.200 -->
00:04:35.120how to build machine learning models,
65
00:04:35.440 -->
00:04:36.320how to
66
00:04:36.640 -->
00:04:40.000release them to production, how to test them in production to
67
00:04:40.320 -->
00:04:41.680ensure that they
68
00:04:42.320 -->
00:04:44.160don't regress in their performance
69
00:04:44.555 -->
00:04:46.875and in different fields. So it's been
70
00:04:47.115 -->
00:04:48.635in financial services,
71
00:04:48.715 -->
00:04:52.155in travel, in health care, and other industries.
72
00:04:52.475 -->
00:05:26.905Now digging into the topic at hand, as you mentioned, you wrote a book on the topic of RAG and bringing it into production, and RAG as a concept was one of the first ones that really gained a lot of attention as LLMs were exploding onto the scene because it was something that was fairly straightforward and easy to engineer because we didn't have all the frameworks. We didn't have all of this concept of agentic capabilities, and the models themselves weren't really strong enough to do much with that. But we understood how to do some of that few shot learning where you do the in context
73
00:05:27.000 -->
00:05:28.040parameterization
74
00:05:28.040 -->
00:05:32.040of providing some examples so that the LLM could then synthesize that.
75
00:05:32.440 -->
00:05:35.080And I'm wondering if you can just talk to
76
00:05:35.480 -->
00:05:36.840what you see now
77
00:05:37.080 -->
00:05:52.985that we're a few years in the role that RAG is playing in some of the actual systems that people are running. And now that we've moved beyond it being a toy and just a... An easy way to get a quick demo running to something that people are relying on for actual production applications.
78
00:05:54.500 -->
00:05:55.780Sure. Yes. So,
79
00:05:56.340 -->
00:06:02.100about, you know, two, two and a half years ago, you're absolutely right. Rag was the hottest thing. Right?
80
00:06:02.420 -->
00:06:08.820And let me clarify a little bit the reason for that, because we started by having LLMs and they were answering questions really well.
81
00:06:09.425 -->
00:06:11.905And the main challenge or the main opportunity,
82
00:06:11.905 -->
00:06:13.505I guess, also with Rag was
83
00:06:14.065 -->
00:06:18.305I want to connect it to my enterprise data. I want to connect to the data that's
84
00:06:18.705 -->
00:06:21.905documents on Google Drive or on S3 or
85
00:06:22.449 -->
00:06:28.850in Notion or in anywhere like that. And the LM doesn't know about your private data. So the main
86
00:06:29.090 -->
00:06:33.410reason to do Rag was to ingest the data from these data sources,
87
00:06:34.129 -->
00:06:35.650prepare them for retrieval
88
00:06:35.925 -->
00:06:47.685so that you can use retrieval as part of REG. That's the R in REG there, it's retrieval augmented generation, right? And so the R is the prepare the data for semantic search and retrieve it at query time
89
00:06:47.940 -->
00:06:48.980so you could
90
00:06:49.300 -->
00:06:50.820use it inside of
91
00:06:51.380 -->
00:06:55.220Reg. And the Reg was a simple idea. It was a prompt that said,
92
00:06:55.700 -->
00:06:58.260you gave the element a prompt that said, here's my question,
93
00:06:59.460 -->
00:07:04.235and then here's some relevant documents or chunks of documents that might have relevant data.
94
00:07:05.034 -->
00:07:05.675And
95
00:07:05.835 -->
00:07:09.115the end of the prompt was, please answer this question
96
00:07:09.435 -->
00:07:11.595given these documents that are relevant.
97
00:07:11.835 -->
00:07:15.914And the LM will process everything, summarize those documents, and sort of give you the right answer.
98
00:07:16.880 -->
00:07:20.160And you're right too, Tobias. It was quite magical.
99
00:07:20.800 -->
00:07:21.840And a lot of people
100
00:07:22.320 -->
00:07:30.000said, like, there was a time where, like, oh, look at me. Talking to my PDF was, like, the magical sort of simple use case that
101
00:07:30.480 -->
00:07:35.245everybody really liked. It was easy to do. I mean, you had a vector database. There was,
102
00:07:35.805 -->
00:07:38.685at some point, like, I think 50 of those available,
103
00:07:38.764 -->
00:07:43.085both commercial and open source. It was an explosion of of vector databases.
104
00:07:43.485 -->
00:07:48.500And you just did some chunking of the documents, parsing the document, checking the documents,
105
00:07:48.820 -->
00:07:56.020put them in even in memory because it was a small demo. And it was it was... It created a new capability that people really
106
00:07:56.655 -->
00:08:02.415liked. Instead of reading the documents for 100 pages, they could really like ask it questions, which was really nice.
107
00:08:02.895 -->
00:08:07.935Now that is very different than doing this in a real production environment. Right?
108
00:08:08.495 -->
00:08:09.375And
109
00:08:09.640 -->
00:08:15.320I think that's where companies that are... That build right systems, like I worked at one company called Vectara,
110
00:08:15.320 -->
00:08:27.155which is where I wrote this book as well, has done a lot to create that retrieval and query pipeline to be much stronger and much more useful. Let me talk a little bit about where some of the challenges are in that.
111
00:08:27.555 -->
00:08:28.515So first,
112
00:08:28.835 -->
00:08:31.315I mentioned ingestion.
113
00:08:31.795 -->
00:08:33.875Right? So you ingest the data
114
00:08:34.355 -->
00:08:37.315into a semantic search engine like a vector database.
115
00:08:37.830 -->
00:08:52.055And just in itself, when you think about it, at scale is much more difficult. Let me highlight a couple couple example reasons. Right? There... There's there's big companies who have PDFs that are... And I've I've seen one of those. 15,000
116
00:08:52.055 -->
00:09:02.375pages of a PDF. Right? So think about that scale. Like, you run something in Python, let's say, and you you know, it could take, I don't know, hours to just process the PDF. And maybe in
117
00:09:02.949 -->
00:09:09.670the last two pages, it runs in an error and fails and you have to try again. So you have to think about sort of normal engineering
118
00:09:09.750 -->
00:09:12.790best practices, right, of how do you tackle
119
00:09:13.350 -->
00:09:27.865really large files so there's no... It doesn't go out of memory. You do it in small batches or something like that. The other thing is just the number of files. I mean, it could be a million files, right, or 20,000,000 files. It doesn't have to be files, by the way. Could be, Notion documents. It could be,
120
00:09:28.425 -->
00:09:29.625Jira tickets.
121
00:09:29.945 -->
00:09:32.290It could be, you know, stuff from
122
00:09:32.610 -->
00:09:34.850SharePoint or or whenever.
123
00:09:35.089 -->
00:09:37.890But again, if you have a lot of these documents,
124
00:09:38.290 -->
00:09:42.930you have to build a production system that not only ingests all those documents for the first time,
125
00:09:43.505 -->
00:09:47.905which again, could take days or weeks and you have to paralyze it maybe and
126
00:09:48.385 -->
00:09:55.825build retries in case some documents run into errors. And you also have to build things for refresh.
127
00:09:55.904 -->
00:09:57.745Right? If I have, let's say,
128
00:09:58.660 -->
00:10:02.260a Google Drive source of data and I ingest all the files there,
129
00:10:02.980 -->
00:10:07.780new files come in every day or files get changed. How do you refresh without
130
00:10:08.100 -->
00:10:15.755re ingesting all the files? Right? And then the last thing I wanna mention on ingest, which is really critical to understand is,
131
00:10:16.555 -->
00:10:17.595multimodal.
132
00:10:17.595 -->
00:10:25.274Right? So a lot of real world use cases do have multimodal data and quite a bit of it. So for example, tables,
133
00:10:26.490 -->
00:10:35.370images, diagrams, you know, flowchart, things like that. And a lot of times the the value of of answering a question in Rag or in agents is
134
00:10:35.610 -->
00:10:40.330really embedded in that image. Right? You might have a graph that shows the revenues
135
00:10:41.395 -->
00:10:51.235of a company and it's not in any of the numbers, it's just in a graph. So you have to really understand that image to understand what it is. You can even have videos. A lot of companies have
136
00:10:51.635 -->
00:10:52.995training videos, for example,
137
00:10:53.520 -->
00:10:55.440a lot of them for staff,
138
00:10:55.440 -->
00:10:56.480for sales,
139
00:10:56.480 -->
00:11:03.200for customers, etcetera. So you wanna be able to understand video and audio and transcription and so so forth,
140
00:11:04.160 -->
00:11:04.800and so on.
141
00:11:05.585 -->
00:11:06.385And so,
142
00:11:07.585 -->
00:11:12.465that is a a key interesting set of capabilities that you have to develop
143
00:11:12.705 -->
00:11:13.585beyond
144
00:11:13.665 -->
00:11:15.825what's involved in ingesting text.
145
00:11:17.265 -->
00:11:26.640So that's the Indios part. Now another set of challenges is is I'm... I kinda laughed it out a little bit that everybody built it with a vector database, but there's a lot more to retrieval
146
00:11:26.640 -->
00:11:27.440than that.
147
00:11:28.080 -->
00:11:31.600So today, the sort of state of the art retrieval engine
148
00:11:32.080 -->
00:11:34.320does include a vector database,
149
00:11:35.464 -->
00:11:46.185but also a what's called hybrid search. So there's also a lot of use cases where you do want to have the old school, I'll call it that, search capabilities like with TFIDF
150
00:11:46.185 -->
00:11:47.625or BM25
151
00:11:47.704 -->
00:11:50.345type of lexical or keyword searching.
152
00:11:51.080 -->
00:11:55.720And hybrid search is the ability to merge semantic search, vector search with that together
153
00:11:56.680 -->
00:11:57.240to
154
00:11:57.720 -->
00:11:58.440create
155
00:11:58.840 -->
00:12:02.760a way to identify both keyword search use cases and
156
00:12:03.415 -->
00:12:05.335semantic search use cases.
157
00:12:05.895 -->
00:12:09.415And then people use re rankers quite extensively too because
158
00:12:09.815 -->
00:12:14.375vector search and embedding model, what's known as embedding models, which are the models that you
159
00:12:14.775 -->
00:12:15.575embed...
160
00:12:16.295 -->
00:12:18.535You create vectors from from text,
161
00:12:18.980 -->
00:12:21.540are pretty good for for initial selection.
162
00:12:22.019 -->
00:12:22.899But, actually,
163
00:12:23.300 -->
00:12:27.060they're not as accurate in terms of the semantic ranking.
164
00:12:27.060 -->
00:12:40.425And so you use re anchors, and there's a lot of work in the ranking space as well. So those are, you know, a couple of examples from the the querying part. Right? And then, I mean, if you do Rag, which is sort of a a single shot,
165
00:12:40.825 -->
00:12:49.390so I think you have to now think about the generation part. How do you craft the prompt properly so it's accurately taking all the chunks together
166
00:12:49.790 -->
00:12:52.430and creating the best, most accurate result?
167
00:12:52.830 -->
00:12:57.150And then that leads into the topic you mentioned earlier about evaluation. How do you,
168
00:12:57.870 -->
00:12:58.670in production,
169
00:12:59.150 -->
00:13:00.830evaluate that the results are
170
00:13:01.274 -->
00:13:03.995accurate, that the retrieval is accurate,
171
00:13:04.394 -->
00:13:06.954that there's no hallucinations. It's a big topic,
172
00:13:07.514 -->
00:13:12.154and so on. So there's a there's a whole area of evaluation that, is very, very important.
173
00:13:12.795 -->
00:13:15.195And on that note of evaluation,
174
00:13:15.274 -->
00:13:21.860that I think is probably the hardest part of RAG despite all of the other complexities that really come into it because
175
00:13:21.860 -->
00:13:28.740changing any one piece of the system can have a completely unpredictable result on the output where
176
00:13:29.105 -->
00:13:54.110you might change a piece of data in the system, and then that might actually have been the keystone that allowed the LLM to be able to provide the accuracy that you wanted or maybe changing the model because of either different thinking parameters or different size of the scale of the model or maybe you're changing the retrieval or reranking system. Any one of those things can have an outsized impact on the overall.
177
00:13:54.510 -->
00:13:56.830And so there have been numerous
178
00:13:57.375 -->
00:13:59.215frameworks and approaches
179
00:13:59.215 -->
00:14:04.495developed to be able to do some sort of at least heuristic testing of the outcome.
180
00:14:04.815 -->
00:14:12.015A lot of the, at least, earlier iterations were reliant on LLM as a judge where you just had another language model
181
00:14:13.000 -->
00:14:20.920gauge some sampling of the outputs to say, yes. This looks good or this looks bad. And as long as everything is about
182
00:14:20.920 -->
00:14:21.880average,
183
00:14:22.040 -->
00:14:23.480then you ship it.
184
00:14:23.880 -->
00:14:24.600But, also,
185
00:14:25.175 -->
00:14:32.214there's the offline versus online testing where with offline, you say, here is my set of examples and here are my
186
00:14:32.375 -->
00:14:41.014expected outputs. As long as everything looks about right at the end of the day, then we're we're fine. But, really, the changes in these systems come about
187
00:14:41.470 -->
00:14:48.110when you actually put them in front of people because the way that somebody asks the question or the way that the prompt is structured
188
00:14:48.270 -->
00:14:51.790can also have all these different variables involved.
189
00:14:52.510 -->
00:15:02.015And so I'm wondering if you can talk to some of the current set of approaches that people are using for these production or enterprise grade RAG systems that they
190
00:15:02.335 -->
00:15:04.895rely on to actually build and maintain
191
00:15:05.375 -->
00:15:10.495confidence in the accuracy and reliability of the overall stack.
192
00:15:11.839 -->
00:15:15.519Yeah. A 100%. Super... You're right. It's a super important,
193
00:15:15.759 -->
00:15:17.120topic in Reagan.
194
00:15:17.279 -->
00:15:42.210I wanna mention also one that people don't necessarily think about upfront. They just build first, and then they realize, oh, we gotta build something like this. So let me let me try to give the full picture here. So first, yes, you're right. People use LM as a judge. What is that? That's like just to give us some some eval prompt and you try to evaluate the accuracy of the results. But I want to separate between retrieval accuracy
195
00:15:42.610 -->
00:15:44.210and generation accuracy.
196
00:15:44.290 -->
00:16:04.525Right? Two different things. So retrieval accuracy, we just described, you know, vector vector search and hybrid search and all that. So the end of that phase of RAG is a set of, they're called chunks. They're parts of documents, let's say, a couple paragraphs sometimes or something like that, that are deemed to be relevant for this particular query.
197
00:16:04.845 -->
00:16:08.970And so the first question is, did my retrieval pipeline
198
00:16:09.210 -->
00:16:21.610retrieve the right set of chunks, the most relevant set of chunks? Now you have to think about, do I have the relevant set of chunks? The first problem is, like, sometimes the question doesn't have an answer in the documents that I ingested.
199
00:16:22.065 -->
00:16:23.585And then maybe I need to
200
00:16:24.305 -->
00:16:27.505figure out where those documents are and bring them in.
201
00:16:27.905 -->
00:16:36.305It's not obvious in a big enterprise that you have the right, you know, baseline ground truth for... To answer every question that a user might ask.
202
00:16:36.980 -->
00:16:38.740But assuming you do have them,
203
00:16:39.060 -->
00:16:40.500your retrieval pipeline,
204
00:16:40.980 -->
00:16:54.905like you said, might have shifted. You may have been putting a new re ranker. You might have increased the number of results, reduced number of results. You may have read down how you do chunking to so many levers that you could have changed, and every one of those could have influenced
205
00:16:54.905 -->
00:16:56.345your retrieval pipeline.
206
00:16:56.505 -->
00:16:57.225And so
207
00:16:57.785 -->
00:16:58.985on retrieval,
208
00:16:59.225 -->
00:17:00.825you know, people tend to
209
00:17:01.225 -->
00:17:04.265do LLM as a judge, or they try to use the regular
210
00:17:04.900 -->
00:17:15.940techniques that we have, like precision recall, F1 from machine learning. Right? The problem with that is those techniques, those metrics are pretty simple or pretty proven,
211
00:17:16.020 -->
00:17:21.365require a source of truth. Right? So precision, for example, is how many of the retrieved chunks
212
00:17:22.005 -->
00:17:30.245are actually should be in... Let's say I have top 10. How many of the top 10 that I actually retrieved should be in the top 10 are actually relevant. Right?
213
00:17:30.565 -->
00:17:32.245And you have to
214
00:17:32.700 -->
00:17:35.739somebody has to sit down on all the chunks in your,
215
00:17:35.980 -->
00:17:38.140say, 20,000,000 document organization
216
00:17:38.140 -->
00:17:39.580document set and
217
00:17:39.980 -->
00:17:46.874look at all the chunks and say, are those relevant for this query and that other query? And I I said 20 mil to to,
218
00:17:47.515 -->
00:17:53.195you know, emphasize it's it's completely impossible to do it in practice. Right? It's completely infeasible.
219
00:17:53.195 -->
00:17:58.554Nobody can do that. And so in theory, those techniques work, but in practice, it's not working.
220
00:18:00.110 -->
00:18:13.790In in the answer side, so the generation, let's say that I don't do this on the the retrieval side, but I go to the generation side, people have done in practices. They said, I'm gonna come up with a thousand questions that I think are relevant. Or sometimes
221
00:18:14.175 -->
00:18:22.975if they're smarter or they have the system in in in production already, they'll look at the most common questions or take a random sample of questions that users actually ask.
222
00:18:23.535 -->
00:18:27.855And then they'll they'll have somebody sit down and generate a thousand answers.
223
00:18:28.335 -->
00:18:28.655Okay?
224
00:18:29.460 -->
00:18:34.820It's a manual process, but, you know, it's doable. You can sit for a week and... Or a couple people and
225
00:18:35.059 -->
00:18:38.980and generate that. And then they'll have some metrics to measure
226
00:18:39.140 -->
00:18:40.179to the... Know,
227
00:18:41.075 -->
00:18:46.914is this... Is the generated answer similar enough to the to the ground truth answer?
228
00:18:47.315 -->
00:18:49.875And I've seen a lot of people try that.
229
00:18:50.835 -->
00:18:53.955There's two problems with that approach, which also leads to LLM as a judge.
230
00:18:55.980 -->
00:19:00.220The first one, of course, as I said, like, the questions themselves could be hard to generate sometimes.
231
00:19:00.540 -->
00:19:04.940Remember, you have to generate not just questions that people ask, but also questions that people
232
00:19:05.580 -->
00:19:18.484might ask later. And so it keeps changing. The tendency is to ask questions that have obvious answers, but you wanna ask also tough questions that don't have answers necessarily and things like that. But the answer is... That's where, again, I see a scalability issue
233
00:19:18.485 -->
00:19:23.445in practice. Sometimes these organizations are so complicated. They've existed for
234
00:19:23.740 -->
00:19:24.700thirty years,
235
00:19:25.500 -->
00:19:26.779and nobody
236
00:19:26.779 -->
00:19:34.779knows the answer to some questions. It's like in so many systems. And so you can even find the engineer or the product manager or
237
00:19:34.860 -->
00:19:37.260whatever the function is, the production
238
00:19:37.260 -->
00:19:37.659manager
239
00:19:38.215 -->
00:19:40.055that knows the answer to that question,
240
00:19:40.695 -->
00:19:48.535to validate it, that's the right... To to write that golden answer. Right? And again, it keeps changing. Like like you mentioned earlier, like some of the answers might
241
00:19:49.015 -->
00:19:56.250might change over time because I have a new version of a product or I have a new set of, capabilities in my my API.
242
00:19:56.730 -->
00:20:00.330So it's very hard to keep track of in in practice.
243
00:20:00.570 -->
00:20:02.889So let me talk about two approaches
244
00:20:02.970 -->
00:20:09.865that, are using LM as a judge that, I also write up in the book that are really cool to solve both retrieval
245
00:20:10.425 -->
00:20:11.544and generation.
246
00:20:11.705 -->
00:20:13.304The first one is called umbrella.
247
00:20:13.945 -->
00:20:21.865And and... Oh, by the way, before I go there, I wanna mention this has been really interesting research that, we did at Vectara along with the
248
00:20:22.210 -->
00:20:25.650Jimmy Lynn's lab in University of Waterloo. I wanna give,
249
00:20:25.970 -->
00:20:31.410all credits to those guys. They did a lot of the research, and we just collaborated to implement this in something
250
00:20:31.650 -->
00:20:39.164called OpenReque eval that we created later. But Umbrella is really cool. It's a very simple algorithm if you think about it first,
251
00:20:39.725 -->
00:20:42.284and this is to identify chunks that are relevant.
252
00:20:43.085 -->
00:20:46.124So you take every chunk in your top 10,
253
00:20:46.445 -->
00:20:49.885and you run an LM as a judge that gives us a score between
254
00:20:50.410 -->
00:20:54.570zero and three. Zero means the chunk is completely irrelevant for the query.
255
00:20:54.970 -->
00:20:57.130One means it's somewhat relevant.
256
00:20:57.930 -->
00:20:59.289Two is like it's
257
00:20:59.370 -->
00:21:04.890pretty good relevance. And three is like it's super relevant and might even solve the whole problem. Right?
258
00:21:06.545 -->
00:21:07.184And,
259
00:21:07.425 -->
00:21:16.465you know, for those who are with that line as a judge would ask me like, okay, great. I can generate this. Like, what's so research y about this? Why is it so special?
260
00:21:16.705 -->
00:21:26.190And the reason it's so special is... And that's the algorithm. You take this and you rank it like this. Right? But the the really cool part about it is that the
261
00:21:26.510 -->
00:21:30.270the lab for for Jimmie Lin, the the research they did is they
262
00:21:30.430 -->
00:21:33.310tested this approach with a particular prompting
263
00:21:33.310 -->
00:21:33.870language,
264
00:21:35.305 -->
00:21:36.905also with human beings.
265
00:21:37.385 -->
00:21:39.625They looked at the chunks and they
266
00:21:39.945 -->
00:21:53.490had a bunch of data sets and they compared the results of human judgment with this, you know, over time, a couple iterations of crafting the particular prompt sentence, and they found that the correlation is very high. I think it was like something like
267
00:21:53.810 -->
00:21:56.049maybe 80%, if I remember correctly.
268
00:21:56.370 -->
00:21:59.330So very high correlation between what this particular
269
00:21:59.650 -->
00:22:01.570prompting LLM would do
270
00:22:02.145 -->
00:22:05.025compared to what a human would rank it as.
271
00:22:05.665 -->
00:22:09.825And so you have confidence that if you use it in this way,
272
00:22:10.225 -->
00:22:15.585you get the zero to three actually mean what they do. And that's a general problem of LLM as a judge.
273
00:22:16.830 -->
00:22:30.350It's a fantastically easy algorithm to implement for a lot of different use cases. The problem is, do you trust it? Right? It's got its own biases. It's got all kinds of problems. The LLM might change and what you get might change too and stuff like that.
274
00:22:31.325 -->
00:22:35.005Yeah. With the LLM as a judge, you then have two nondeterministic
275
00:22:35.005 -->
00:22:45.245systems that you have to have some sort of evaluation for, and then you're in the catch 22 of which one do you tune when and how do you decide which one regressed versus improved.
276
00:22:46.620 -->
00:22:56.940Exactly. Exactly. So with Umbrella, you kinda wanna keep it the way it was implemented first. It's been proven. It's shown the the sort of correlation, and that's why it's it's powerful.
277
00:22:57.500 -->
00:23:01.404I'll just mention briefly the other one, And, you know, it's called
278
00:23:01.804 -->
00:23:02.845autonogatizer.
279
00:23:02.845 -->
00:23:11.004And it's a little bit more complex approach, but it's similar in concept. Again, NLM is a judge approach that takes those chunks and
280
00:23:11.644 -->
00:23:14.960ranks them relevant to the the generated
281
00:23:14.960 -->
00:23:17.600answer. This is for for the answer relevancy.
282
00:23:18.080 -->
00:23:20.080And, what you do is you you
283
00:23:20.400 -->
00:23:21.440then see,
284
00:23:21.919 -->
00:23:24.720it tests for a different thing, which is is this
285
00:23:25.365 -->
00:23:31.205answer that was generated by the LLM in Rag, does it use all the relevant chunks properly?
286
00:23:31.685 -->
00:23:34.404Right? So if one of the chunks was rated three,
287
00:23:34.725 -->
00:23:36.725like the three, like the highest rated thing,
288
00:23:37.340 -->
00:23:40.940you know, you wanted to make sure that that piece of information was
289
00:23:41.340 -->
00:23:42.940moved over into the answer.
290
00:23:43.420 -->
00:23:48.220And, again, it's not deterministic, so you don't really know. So that's the goal of that algorithm. It's,
291
00:23:48.780 -->
00:23:49.900again, something was,
292
00:23:50.365 -->
00:23:52.044something actually called Nuggetizer,
293
00:23:52.044 -->
00:23:55.085which is deterministic, and then Auto Nuggetizer is this
294
00:23:55.325 -->
00:24:01.244generation of nuggets using LLMs and then sort of evaluating this in the context of the generated answer.
295
00:24:01.725 -->
00:24:05.404So so those are two LLMs as a judge approaches that I wanted to highlight.
296
00:24:06.150 -->
00:24:07.429And as you mentioned,
297
00:24:08.070 -->
00:24:09.030one of the
298
00:24:09.590 -->
00:24:19.590standard ways of doing the evaluation is that you have that set of labeled question and answer pairs of this is the question that I have. This is the answer that I expect,
299
00:24:19.670 -->
00:24:24.475and that can be a very time consuming and potentially manual process,
300
00:24:24.475 -->
00:24:28.315which can also be expensive and also requires that you have some
301
00:24:28.315 -->
00:24:29.515concept of
302
00:24:29.675 -->
00:24:32.155what data you have, what types of questions
303
00:24:32.235 -->
00:24:34.555or inquiries are being performed,
304
00:24:35.120 -->
00:24:40.240and that requires some amount of bootstrapping that can again become a catch 22.
305
00:24:40.480 -->
00:24:44.559And I'm wondering what are some of the ways that people are tackling that
306
00:24:45.280 -->
00:24:52.914start from zero position of I have the LLM. I have a way of generating the embeddings, producing the context,
307
00:24:53.475 -->
00:24:55.075building out that whole machinery,
308
00:24:55.235 -->
00:25:02.835but I don't have the flywheel in action yet. So I need to be able to either generate synthetic data to start with or
309
00:25:03.330 -->
00:25:04.210hypothesize
310
00:25:04.210 -->
00:25:06.289a certain set of questions and answers,
311
00:25:06.370 -->
00:25:20.645or maybe I just do it where I have a live feedback loop in production and I'm doing online evaluation so that the system can evolve and improve as it's operating rather than having to get a running head start first?
312
00:25:21.365 -->
00:25:25.284Yeah. So first of all, yes, synthetic generation is actually a great technique.
313
00:25:25.525 -->
00:25:26.725You can point
314
00:25:27.685 -->
00:25:32.085kind of an LM at at a good sample of your data that you just ingested
315
00:25:32.480 -->
00:25:33.919and actually generate
316
00:25:34.000 -->
00:25:39.440some really good... With a good prompt, you can generate a diverse set of questions based on this data.
317
00:25:39.680 -->
00:25:45.840It's not perfect because usually, we'll do it one document at a time, so it cannot generate very...
318
00:25:45.920 -->
00:25:46.080Like,
319
00:25:46.755 -->
00:25:50.914you know, questions that necessarily require information from multiple
320
00:25:51.235 -->
00:25:52.195documents.
321
00:25:52.195 -->
00:25:53.635That's a little more tricky.
322
00:25:53.795 -->
00:26:00.355But people do that all the time. I also highly recommend looking at your logs if your system is already... Even a little bit of time in production.
323
00:26:01.270 -->
00:26:02.629What types of questions
324
00:26:02.790 -->
00:26:14.554people actually ask that they use the system and ask your subject matter experts, you know, for suggestions for different questions that might be useful. So that's a good way to kick this off. And
325
00:26:15.035 -->
00:26:20.075sort of from a, like, a release perspective. Right? You wanna build that system to be
326
00:26:20.555 -->
00:26:30.150sort of a part of your aggression suite in a way. Right? So you wanna be... Every time I I do something, we kinda mentioned it earlier. If you change a component, you change something, you
327
00:26:30.710 -->
00:26:42.735fix the bug that changes your chunking strategy or something, everything impacts the system. So you want... Every time as part of your testing, as part of your regression testing or something, you want to be able to run this complete set.
328
00:26:43.054 -->
00:26:50.095And it's got to be, you know, versioned and controlled and sort of so you know that you at least got the same results as before
329
00:26:50.255 -->
00:26:52.494and hopefully better over time as you
330
00:26:52.975 -->
00:26:53.775improve the system.
331
00:26:54.390 -->
00:26:58.710Now let's talk about online testing a little bit. So it's a very interesting
332
00:26:59.270 -->
00:27:00.070approach,
333
00:27:00.070 -->
00:27:11.955but it's more difficult, right? And it's more difficult for two reasons. One is you don't want to increase latency, right? You don't want to have yet another call to an LM to test before you produce the answer.
334
00:27:12.195 -->
00:27:13.635It also, of course, costs
335
00:27:13.795 -->
00:27:16.275a lot more. Right? It may be... Yeah. So,
336
00:27:16.595 -->
00:27:22.195you have another LM call. It's more expensive. People worry about cost of LMs in 2026
337
00:27:22.195 -->
00:27:29.820much more than previous years, I think it's becoming more and more of an issue. So what I've seen in my my general recommendation is to do online,
338
00:27:30.220 -->
00:27:32.059maybe as a phase two, like,
339
00:27:32.940 -->
00:27:38.299if you want, or you can do it in phase one if you're up to it. But, like, it's okay to do it later on after you do the offline,
340
00:27:38.460 -->
00:27:39.100sort of
341
00:27:39.595 -->
00:27:43.114release. And also do it as a sampling. Right? You don't have to
342
00:27:43.595 -->
00:27:50.714do it on every one of the queries that come into your system. So the way this works, right, is your your user query comes in,
343
00:27:51.115 -->
00:27:52.875you go through your Rag pipeline,
344
00:27:53.860 -->
00:27:55.700and then you test.
345
00:27:56.340 -->
00:28:18.405And you don't have to test on all the queries. There may be a lot. Right? Some people have, like, I don't a million queries a month. Right? It will be a lot of cost to run another LLM call or maybe multiple LLM calls on each of these. And so you can say, wanna test on a random 10% of the queries or 20% or 5% or something like this to control your your budget
346
00:28:18.565 -->
00:28:25.229and also do it out of band. So I don't recommend doing it like waiting and holding off the user until
347
00:28:26.110 -->
00:28:27.309it's finished.
348
00:28:28.190 -->
00:28:41.304Think of it as diagnosis for your system. You did off... Offline. You store the results, and then you have some analysis later on and see what you can learn from it. You can learn that, hey. This query, the result wasn't that great,
349
00:28:42.185 -->
00:28:49.065etcetera. And then you go and fix it back. And something that goes out of band of your release cycle, but gives you, like, more immediate responses.
350
00:28:49.639 -->
00:28:51.720And one of the other evolutions
351
00:28:51.720 -->
00:29:18.000of RAG that came about as the idea of agents came into the picture more strongly and as the models became more capable is agentic RAG. And I'm wondering if you can talk to some of the ways that that is distinct from the first generation of rag stacks and some of the ways that it fits into the current ecosystem and maybe how it complicates the picture of how to actually evaluate the effectiveness of it.
352
00:29:18.960 -->
00:29:31.475Yeah. So the way I've seen this kind of evolve over time is, as we said at the beginning, you know, RAG was the kind of hot thing and and everything happened. But at some point, people saw some of the challenges
353
00:29:32.115 -->
00:29:35.875of this one shot flow that Wright has. Query,
354
00:29:35.875 -->
00:29:36.835retrieval,
355
00:29:36.915 -->
00:29:41.715generated answer. And so it evolved into what's called AgenTik RAG. And
356
00:29:42.115 -->
00:29:43.715AgenTik RAG is essentially
357
00:29:44.850 -->
00:29:54.929a simple form of the agents we have today. A very simple form. It's just... It allows you to do maybe a couple of iterations. Right? So the agent takes the user query.
358
00:29:55.330 -->
00:29:57.410The first thing it can do is it actually
359
00:29:59.145 -->
00:30:00.184it can
360
00:30:00.505 -->
00:30:01.945rephrase the query
361
00:30:02.105 -->
00:30:04.184in a way that's better,
362
00:30:04.424 -->
00:30:07.384maybe appropriate for the retrieval part.
363
00:30:07.625 -->
00:30:08.424So it can
364
00:30:08.745 -->
00:30:13.065rewrite the query in in a different way. It can actually rewrite it a couple times
365
00:30:13.650 -->
00:30:19.410and maybe apply to the retrieval pipeline a few times to get a couple of different results back.
366
00:30:19.650 -->
00:30:21.410And that became possible
367
00:30:21.410 -->
00:30:29.624as our LLMs became possible too. So it didn't just happen in a vacuum. We had longer context windows. You can not just put five results,
368
00:30:29.705 -->
00:30:31.624and that's all space you had to have.
369
00:30:32.025 -->
00:30:36.585You could do 10 or 20 or 50 or a 100 because the the context windows became
370
00:30:36.825 -->
00:30:40.664longer, and you can put more results in there. So AgenTiGrag,
371
00:30:40.664 -->
00:30:45.509the primary value I see is that ability to do multiple iterations
372
00:30:45.830 -->
00:30:51.509and also rewrite the queries. So a lot of times if you run a query the way the user wrote it,
373
00:30:52.070 -->
00:30:53.350it may not be
374
00:30:53.670 -->
00:31:01.275the correct way that is best suited for accurate retrieval. Right? User may have an acronym there, for example,
375
00:31:01.675 -->
00:31:02.235that
376
00:31:03.275 -->
00:31:10.075is unknown to the system, and the LM might actually translate it using some glossary that you give it or something like that.
377
00:31:10.810 -->
00:31:15.690So that's been actually really helpful to just improve accuracy of retrieval in general.
378
00:31:16.490 -->
00:31:21.370And then this evolved into what we know today as AI agents. Right? So agents are
379
00:31:22.745 -->
00:31:30.425sort of an evolution of that where we have what we call the harness, which is the evolution of the AgenTiC Rag loop, the simple loop that we had at the beginning,
380
00:31:30.665 -->
00:31:32.345and now it has access to tools.
381
00:31:32.745 -->
00:31:39.309So if you think about it in that in that sense, AgenTiC Rag was an agent with one tool for retrieval
382
00:31:39.710 -->
00:31:43.309using the Rag kind of retrieval pipeline without the generation.
383
00:31:43.550 -->
00:31:46.270And now we can have access to tools anywhere from
384
00:31:46.430 -->
00:31:52.270retrieval tools like with the Rag, but also tools that go directly to target systems. Like there's
385
00:31:52.565 -->
00:31:56.004tools to query databases with text to SQL, for example.
386
00:31:56.805 -->
00:32:01.845There's tools to go to the native systems, like, you know, search capabilities,
387
00:32:01.845 -->
00:32:02.404in
388
00:32:02.645 -->
00:32:07.285in different places in Notion and other places. They all provide this kind of API type capabilities
389
00:32:07.470 -->
00:32:08.830all through MCP.
390
00:32:08.830 -->
00:32:13.149And that's what the the harnesses we have today for for AI agents building.
391
00:32:14.190 -->
00:32:19.710And that idea of having the tools be the retrieval
392
00:32:20.510 -->
00:32:22.190engine has also
393
00:32:23.315 -->
00:32:31.715maybe diminished some of the initial supremacy of vector databases as the end all be all for that retrieval step
394
00:32:31.955 -->
00:32:32.674and
395
00:32:32.755 -->
00:32:37.315changes some of the equations as far as what you need to do for the
396
00:32:37.920 -->
00:32:53.440seeding of the data where you don't necessarily have to do the whole pipeline of collect the data, chunk it, stick it into a vector database full of embeddings in order to be able to get anything out of it. But it is still a necessary element. I'm curious how you're seeing that
397
00:32:54.265 -->
00:33:07.990change the ways that people are thinking about their overall retrieval and context system, particularly for these more agentic use cases as well as some of the way... Reasons why somebody might want to stick with a more straightforward
398
00:33:08.070 -->
00:33:11.270rag system in the kind of first generation
399
00:33:11.270 -->
00:33:12.230definition.
400
00:33:13.430 -->
00:33:14.870Yeah. Excellent.
401
00:33:14.870 -->
00:33:17.110Excellent point. So, you know,
402
00:33:17.430 -->
00:33:22.630dragging all the data over to ingest it into the sort of the the rag pipeline
403
00:33:22.924 -->
00:33:40.330was hard. You had to connect to the source system. You had to essentially replicate all the data. So you had to duplicate. Those were the downsides. Right? And you had, like we talked earlier, we had to refresh it every once in a while. So you had to sort of create like a hot copy of the data only in a way that's,
404
00:33:40.650 -->
00:33:46.090sort of in a vector database or in a lexical database for ready to be queried.
405
00:33:46.330 -->
00:33:56.705But it didn't have the advantage of semantic search and hybrid search and all these things we talked about that created better results. And so today, you're right, as things evolve,
406
00:33:57.025 -->
00:33:58.545more and more vendors
407
00:33:59.105 -->
00:33:59.985created
408
00:34:00.065 -->
00:34:01.825tools for their system
409
00:34:01.985 -->
00:34:07.159to be able to create that system. But the downside of that still, and it keeps improving,
410
00:34:07.160 -->
00:34:08.920is that you are dependent
411
00:34:09.080 -->
00:34:12.760on the quality of retrieval of that tool. Right? So if I call...
412
00:34:13.080 -->
00:34:18.360And and I'm I'm... I wanna say Notion, but I think actually Notion search is not that bad. Not not
413
00:34:19.080 -->
00:34:24.345kind of telling anything about them, but just because it's a it's a common thing. If you go to...
414
00:34:25.065 -->
00:34:27.705If you call a tool of Notion instead of bringing
415
00:34:27.865 -->
00:34:32.025it back to search, you depend on whether Notion Search is good or not.
416
00:34:33.080 -->
00:34:36.600Does it do multimodal search properly? Does it do
417
00:34:37.080 -->
00:34:40.920the text search properly? All these things we talked about become important.
418
00:34:41.320 -->
00:34:42.360And if they're not,
419
00:34:42.760 -->
00:34:48.785then it doesn't help your agent. It's not gonna get the right information. Similarly with Google Drive, similarly with SharePoint,
420
00:34:48.785 -->
00:34:51.985similarly with, you know, Jira or or anything else that you have.
421
00:34:52.225 -->
00:34:54.545So that's the the trade off you make.
422
00:34:54.945 -->
00:35:02.705And I think as an industry, we're kind of in the middle of that. So over the last two years, a lot of these sort of API search functionality has improved.
423
00:35:03.599 -->
00:35:11.760But not all these companies have, you know, it's it's... You know, search is a kind of its own little sets of capabilities
424
00:35:11.839 -->
00:35:13.680and sort of know how.
425
00:35:13.920 -->
00:35:24.535And I think it's not super easy for all of them to sort of improve the search to a level that it can be as good as you might need it to be. The other challenge is a lot of companies are now moving to
426
00:35:25.095 -->
00:35:25.975kind of
427
00:35:26.695 -->
00:35:29.975what's called... There's a word for it. It's called AI sovereignty.
428
00:35:29.975 -->
00:35:36.020Right? Like... But kind of on premise. Right? When you go to on premise... And we haven't touched this yet, but, like, just to...
429
00:35:36.500 -->
00:35:37.540On this point,
430
00:35:37.860 -->
00:35:41.860like, they want everything in control. So they're calling a local LLM.
431
00:35:42.420 -->
00:35:43.460Maybe it's
432
00:35:43.940 -->
00:35:44.820OpenAI's
433
00:35:44.820 -->
00:35:58.395open source model, or maybe it's the NVIDIA one or or thinking machines, whatever it may be, it's all... Nothing goes outside. Nothing that goes outside. And so again, if you have to do that, a lot of times you might wanna ingest the data
434
00:35:59.210 -->
00:36:04.089earlier into that local environment so they can be part of what can be queried,
435
00:36:04.329 -->
00:36:08.650and you don't have to make any external API calls in sort of these air gapped environments.
436
00:36:09.609 -->
00:36:13.769One of the other interesting pieces of bringing agents into the mix is,
437
00:36:14.335 -->
00:36:15.375in particular,
438
00:36:15.535 -->
00:36:18.495on the side of data pipelines where
439
00:36:19.455 -->
00:36:34.310the first generation of RAG required a lot of upfront engineering effort to build that pipeline of doing the chunking and embedding, etcetera, keeping that up to date. Now agents are doing a lot of the work of actual code generation. They're being brought into data pipelines,
440
00:36:34.310 -->
00:36:36.310and so that also potentially
441
00:36:36.550 -->
00:36:39.510acts as an input to the RAG system,
442
00:36:39.750 -->
00:36:43.349which can be yet another source of errors or improvements.
443
00:36:43.885 -->
00:36:47.965And I'm wondering what are some of the ways that you're seeing that come full circle where
444
00:36:48.045 -->
00:36:50.365we're bringing LLMs and agents
445
00:36:50.525 -->
00:36:59.910fully into the process of managing the end to end system for the data seeding as well as doing the retrieval and as well as doing the evaluation
446
00:37:00.470 -->
00:37:04.230and just some of the ways that that maybe unlocks some new patterns that you're seeing?
447
00:37:05.030 -->
00:37:07.590Yeah. Quick question. So, for example,
448
00:37:07.910 -->
00:37:14.335there's a lot of different places. I see, for example, an ingesting of data. Right? There used to be a data engineering pipeline,
449
00:37:14.974 -->
00:37:20.255that did sort of, let's say, take a PDF file. You have to parse the PDFs, put it into pages,
450
00:37:21.454 -->
00:37:30.800see where tables and images are, do the chunking, all that stuff. Now people do it with with agents. Right? You have an agent that just does all that process for you. That's one area.
451
00:37:31.279 -->
00:37:32.000Generally,
452
00:37:32.079 -->
00:37:36.079the other interesting thing is all these systems used to be with APIs,
453
00:37:36.400 -->
00:37:44.935and they had very elaborate documentation about the APIs. And you had to, as an engineer, as a developer, have to read all of that and figure out how to implement it and
454
00:37:45.335 -->
00:37:52.935if it has changed and everything. Today, you know, I run Code or Codecs or Copilot or whatever, and I just point it at the APIs and
455
00:37:53.415 -->
00:37:53.975that's it.
456
00:37:55.569 -->
00:38:01.570It produces a really good system for querying for my actual application that uses the API.
457
00:38:01.970 -->
00:38:06.050It produces a good thing for indexing the data or ingesting the data.
458
00:38:06.369 -->
00:38:11.089So like everywhere else in engineering, the coding agents are fantastically powerful
459
00:38:12.025 -->
00:38:14.665to help us build system much, much faster.
460
00:38:15.545 -->
00:38:16.425And honestly,
461
00:38:17.865 -->
00:38:19.065with less
462
00:38:20.105 -->
00:38:34.160mistakes, like we still make mistakes as humans. I know we all say like, oh, is the coding agent really doing a good job? And in some cases, it does not, and we can talk about that too. There's... I have some experience with that too. One of the things I like to do is to write something in Cloud Code and then
463
00:38:34.400 -->
00:38:54.820have codex review it, kinda have this adversarial between them. Because I found that a lot of times that really helps. You show something to Cloud Code and you ask Codex to review it, it says, oh, I found three bugs that CodeCode said everything was okay. Or or the other way around. It's not, I guess, one or the other. But, anyway, getting to your earlier point, yeah, I think, I've seen this in ingestion.
464
00:38:55.140 -->
00:38:56.180I've seen this in,
465
00:38:57.300 -->
00:38:58.580sort of just writing
466
00:38:58.660 -->
00:39:00.820other parts of, the system.
467
00:39:01.140 -->
00:39:10.885I think in the infrastructure of the of the the right pipelines, like where embedding happens and things like this on the retrieval itself, I haven't seen a lot of people use it yet.
468
00:39:11.204 -->
00:39:21.430And also in evaluation, I haven't seen it yet, but that's just maybe me. I haven't, you know, bumped into people to do that. I I could expect that this could be helpful in any any part of this of this. Another
469
00:39:21.510 -->
00:39:26.630term that has been percolating through the ecosystem is context engineering,
470
00:39:26.710 -->
00:39:27.190which
471
00:39:27.830 -->
00:39:38.875if you squint is the same thing as rag, but people like to come up with new terms for the same thing. And I'm wondering what are some of the ways that you think about the overlap and some of the differentiation
472
00:39:38.875 -->
00:39:42.715between the ideas of Rag and the idea of context engineering.
473
00:39:43.434 -->
00:39:57.360So, yeah, the context engineering is... Let let me sort of first state what I kind of my understanding of it just so we align on because the terms are... Could be very confusing. Right? So context engineering is this idea that you as the engineer developing your system
474
00:39:57.680 -->
00:39:58.720control
475
00:39:59.244 -->
00:40:03.245what fits into the context of the LM before you send a request. Right?
476
00:40:03.645 -->
00:40:10.365So by the way, when I started using GPT two, for those who don't know in the audience, it had 512
477
00:40:10.365 -->
00:40:16.740tokens context limit. That's it. We think about now we have a million or 10,000,000. It it sounds ridiculous, but,
478
00:40:17.140 -->
00:40:19.780that was it. And then it became a thousand,
479
00:40:20.339 -->
00:40:23.140ten twenty four. I was like, oh my god. This is double.
480
00:40:23.220 -->
00:40:24.580Like... So,
481
00:40:25.059 -->
00:40:27.059context has grown a lot, which is
482
00:40:27.655 -->
00:40:28.455amazing.
483
00:40:28.615 -->
00:40:30.695But... So context engineering
484
00:40:30.855 -->
00:40:32.535now is this practice
485
00:40:32.535 -->
00:40:35.975of when you create your system of deciding
486
00:40:36.855 -->
00:40:42.055what's in your system prompt, what do you tell the the agent to be like its guiding principles,
487
00:40:42.400 -->
00:40:44.560And what sort of intermediate
488
00:40:44.640 -->
00:40:47.840data you bring into the the same context,
489
00:40:48.880 -->
00:40:50.960that you put in front of the LLM
490
00:40:51.119 -->
00:41:02.205in terms of... We think about RAC, it could be chunks that come in. If it's a more advanced agent, it could be sort of the tools that it may be allowed to call and their definitions.
491
00:41:02.765 -->
00:41:05.405It could be historical information about the user.
492
00:41:05.485 -->
00:41:09.965People now talk about memory. So there's a lot of things that you can pull into the the context,
493
00:41:10.605 -->
00:41:25.320but it's the same thing. It's it's how do you take all this stuff and then you send it to the LM and ask it for help to do something, either call one of the tools, call many of the tools, whatever it needs to do, that'll answer the question or perform a task for you.
494
00:41:25.974 -->
00:41:30.935Yeah. So that's kind of the evolution that, one thing I I I I should mention is,
495
00:41:31.974 -->
00:41:33.895one way I think about RAG
496
00:41:34.055 -->
00:41:35.095in a way
497
00:41:35.415 -->
00:41:41.720is a little bit... I don't... I haven't heard it anywhere else, but I thought it was an interesting way to think about it is REG could be
498
00:41:42.040 -->
00:41:45.400the kind of attention mechanism for context engineering.
499
00:41:45.560 -->
00:41:53.720And what do I mean by that? People know about attention, you know, the famous word in deep learning. Right? Attention is a mechanism in deep learning itself where
500
00:41:54.045 -->
00:41:55.085it sort of
501
00:41:55.724 -->
00:41:57.245looks at the history
502
00:41:57.565 -->
00:41:58.605of the
503
00:41:58.925 -->
00:42:04.365the conversation so far and picks the right words or the right tokens in the history
504
00:42:04.605 -->
00:42:10.090that are more important to generate the next token, right? That's what the retention mechanism is
505
00:42:10.250 -->
00:42:19.610in general. And so sort of taking that idea and saying, I have a question for the user now, and I have all of my corporate, all my enterprise data out there.
506
00:42:20.335 -->
00:42:26.335And REG sort of picks the right sets of information out of there that needs to be pulled in
507
00:42:26.655 -->
00:42:29.215to the context of the LLM
508
00:42:29.535 -->
00:42:33.455in that sense. And so I think of it as, again, a selection... Selector
509
00:42:33.855 -->
00:42:34.575operator
510
00:42:34.800 -->
00:42:37.280that helps you pick what's important,
511
00:42:38.000 -->
00:42:41.680into the the context engineering sort of, landscape.
512
00:42:42.560 -->
00:42:58.775And as you have been working in this space and particularly in your capacity doing developer relations, working with people out in the community? What are some of the most interesting or innovative or unexpected ways that you've seen teams deal with the production requirements of RAG systems?
513
00:42:59.575 -->
00:43:05.140The first thing I I wanted to mention there is not necessarily unexpected, actually expected,
514
00:43:05.140 -->
00:43:06.660but important
515
00:43:06.900 -->
00:43:09.540is how do you deal with roles and permissions.
516
00:43:10.260 -->
00:43:11.300Right? So
517
00:43:11.700 -->
00:43:16.660this is an important problem in Rag and in agents. Right? So I... Let's say I have
518
00:43:17.345 -->
00:43:20.225all my Google Drive ingested into my Rag pipeline.
519
00:43:20.464 -->
00:43:24.465Maybe the salaries of the company, there's Excel sheet that's all... Also there.
520
00:43:24.865 -->
00:43:27.265Only the CEO and HR have access to it.
521
00:43:27.664 -->
00:43:32.305But if I ingest it without any protections, then everybody can can pull information out of that. Right?
522
00:43:33.480 -->
00:43:35.000So you wanna make sure
523
00:43:35.240 -->
00:43:44.680that you have this, role based access control the same way the company implements it be applied in your retrieval pipeline. That's a really important thing to do.
524
00:43:45.160 -->
00:43:50.145And the... I guess the kind of the the innovative ways people implemented this
525
00:43:50.865 -->
00:43:52.065is just by
526
00:43:52.385 -->
00:43:54.465implementing some form of filtering.
527
00:43:54.865 -->
00:43:59.984Right? So if you say attach to every document that you ingest into your pipeline,
528
00:44:00.730 -->
00:44:05.690you touch some some notion of permission. And, again, permission is a whole world of complexity.
529
00:44:06.250 -->
00:44:09.210And a lot of companies have multiple permissioning systems,
530
00:44:09.370 -->
00:44:13.450and, you know, it's it's a mess. But if you can normalize your permission,
531
00:44:13.875 -->
00:44:18.755your role into something that you can sort of add as, say, metadata to the document,
532
00:44:19.395 -->
00:44:25.715and then when a query comes in, you can sort of say, if if the CEO is asking the question,
533
00:44:26.690 -->
00:44:28.130that... Then I'm gonna
534
00:44:28.450 -->
00:44:35.570I'm gonna allow them to see everything. If it's, somebody on the... Whatever, on on another team that's not supposed to see the salaries,
535
00:44:36.050 -->
00:44:41.195then he would then filter the documents that are sort of have the the permission block
536
00:44:41.435 -->
00:44:45.035in the metadata and not include that in the checks even if it's relevant.
537
00:44:45.435 -->
00:44:47.915So so the overs... Supersede
538
00:44:48.155 -->
00:44:50.315relevance with with filtering beforehand.
539
00:44:50.970 -->
00:44:52.250And that's been
540
00:44:52.650 -->
00:44:53.530really helpful.
541
00:44:53.690 -->
00:44:54.730That's one thing.
542
00:44:55.450 -->
00:44:58.970I think multimodal has been an area that I've seen a lot of innovation.
543
00:44:59.530 -->
00:45:01.690So I mentioned this a little bit in the beginning
544
00:45:02.090 -->
00:45:09.515on the indexing or the ingestion side. But think about multimodal also on the UI side. Right? Your application needs to show
545
00:45:10.235 -->
00:45:14.635the response. But if you have an image, you kinda wanna integrate it into the response.
546
00:45:15.115 -->
00:45:19.435So, again, a lot of people don't think about it. If you have a video, you wanna embed the video in there to show
547
00:45:19.830 -->
00:45:25.430where the response was retrieved from and maybe even point the video to the right second.
548
00:45:25.750 -->
00:45:30.630Right? So you kinda wanna have some innovation on the UI side to make the user experience, like, really helpful.
549
00:45:31.350 -->
00:45:32.150Ultimately,
550
00:45:32.310 -->
00:45:35.590everywhere else, every other application we've ever built
551
00:45:35.885 -->
00:45:41.965in tech, people are lazy. They wanna get the answers right away, and they want it to be appropriate for them. So you kinda work
552
00:45:42.365 -->
00:45:46.925really hard to make this work in this way in in multi... Multimodal data.
553
00:45:47.580 -->
00:45:52.780I think the other thing is, as I mentioned, I think people are working really hard to make it
554
00:45:53.100 -->
00:45:54.220be viable,
555
00:45:54.300 -->
00:45:55.820both REG and AgenTik,
556
00:45:56.140 -->
00:45:57.580in sort
557
00:45:58.460 -->
00:46:00.140of the air gapped environments.
558
00:46:00.365 -->
00:46:04.445That's a really important use case for a lot of big companies.
559
00:46:04.845 -->
00:46:05.885Think about,
560
00:46:06.845 -->
00:46:13.885you know, people working in the government industry where there's, like, different whatever agencies and things like this that they can never leave, or
561
00:46:14.460 -->
00:46:17.340companies in the defense industry or semiconductors
562
00:46:17.340 -->
00:46:18.860where there's a lot of competition.
563
00:46:19.180 -->
00:46:20.540Those are areas where we see,
564
00:46:20.940 -->
00:46:25.580even financial services, again, a lot of different things. So if you unpack that,
565
00:46:26.140 -->
00:46:27.980you have to do a lot of innovative stuff
566
00:46:29.465 -->
00:46:35.625to do this. So one of the surprising things that I bumped into was that, well, somewhat surprising, would say, is
567
00:46:36.185 -->
00:46:43.865people are afraid to use the Chinese models, right? Chinese models, the open source models are very, very good in terms of performance, right? They are
568
00:46:45.720 -->
00:46:48.600on par with the commercial models that are API based
569
00:46:49.080 -->
00:46:53.400to some... Almost almost there, I think, like, MiniMax three,
570
00:46:53.480 -->
00:47:00.535Kymi two, you know, three. Like, there's a lot of recent models, QN, like DeepSeek. All of them are... By the benchmarks, they're really good.
571
00:47:01.095 -->
00:47:02.695And they can be hosted locally,
572
00:47:02.855 -->
00:47:09.734and there's not too many models that compete that are sort of by US companies. But I see a lot of resistance of using these models
573
00:47:10.320 -->
00:47:11.040in
574
00:47:11.280 -->
00:47:13.600at least US and European based companies.
575
00:47:13.840 -->
00:47:14.240And,
576
00:47:15.520 -->
00:47:18.800I can see why that would be concerning to some extent, but...
577
00:47:20.000 -->
00:47:32.615And so I I really like, for example, that, thinking machines recently came with a very good use based model, and I see there's a lot of movement there. So that's something that initially surprised me because open source weights are just weights.
578
00:47:32.855 -->
00:47:33.975They can't, like...
579
00:47:34.295 -->
00:47:37.255I don't see... As a technical person, I don't see a way
580
00:47:37.700 -->
00:47:41.540how this... They would send something or the Chinese could control them.
581
00:47:41.940 -->
00:47:46.420Maybe I haven't thought this through enough, and I'm not an expert on security and
582
00:47:47.220 -->
00:48:04.135relationships like this. Maybe it's about the fact that people might get used to them. And then once there's a need for additional code, they'll forget about it or or something like this. I I don't know. I'm really not sure about this. But I've seen a lot of resistance to that for sure in this sort of, server and AI space.
583
00:48:04.775 -->
00:48:09.450And in your experience of working in this area of
584
00:48:09.610 -->
00:48:16.170building and evaluating RAG systems, what are some of the most interesting or unexpected or challenging lessons that you learned personally?
585
00:48:17.290 -->
00:48:21.225Well, first of all, it's something I mentioned earlier that teams don't think about
586
00:48:21.625 -->
00:48:23.945the challenges upfront. They just...
587
00:48:24.265 -->
00:48:36.140Mean, they rush to build a system. And like we said earlier, it's... It was a lot... It used to be a lot of engineering. Now it's a little bit less, but it's a lot of work to build a scalable, robust sort of, like, system
588
00:48:36.460 -->
00:48:38.060with all the bits and pieces.
589
00:48:38.300 -->
00:48:39.340And a lot of teams...
590
00:48:39.820 -->
00:48:40.940I was I was
591
00:48:41.820 -->
00:48:43.580surprised that people don't
592
00:48:43.580 -->
00:48:50.825apply the same rigor that we do to any other system that we ever built in microservices or whatever other technology in the past to
593
00:48:51.065 -->
00:48:51.945the system.
594
00:48:52.265 -->
00:48:54.025I think part of it is because
595
00:48:54.825 -->
00:48:59.865this has been a lot... It's happened so fast and there's been a lot of push like, hey, we gotta go into AI. We gotta
596
00:49:00.279 -->
00:49:04.839AI fire systems or whatever it may be. Right? So I think that's
597
00:49:05.799 -->
00:49:08.440that's something that I've seen, like, the rush
598
00:49:08.680 -->
00:49:15.395and not thinking through it and then being surprised that it's more complicated than we thought when you go to production scale.
599
00:49:15.795 -->
00:49:19.475And the second thing is really... And we talked about it too, is, like, just devaluation,
600
00:49:19.475 -->
00:49:21.475how how little people think about it.
601
00:49:21.875 -->
00:49:24.195And they're then surprised that
602
00:49:24.515 -->
00:49:28.515results are not good, and then they put it... Slap it on the system after the fact.
603
00:49:29.530 -->
00:49:34.810And then realize, okay, how how difficult it is. It's not just creating questions and answers that becomes complicated.
604
00:49:35.210 -->
00:49:36.890So people are used to
605
00:49:37.770 -->
00:49:44.515regular applications, right, where where the metrics... So people understand metrics. Right? You have to have measure latency, measure downtime,
606
00:49:44.515 -->
00:49:46.115you know, all these things that we're
607
00:49:46.915 -->
00:49:50.355accustomed to from the kind of DevOps world. Right? But
608
00:49:50.915 -->
00:49:52.195these new metrics
609
00:49:52.275 -->
00:49:55.955that are ML based and sort of LLM based are new
610
00:49:56.300 -->
00:50:00.060and more difficult and people, like, don't think about them upfront.
611
00:50:00.460 -->
00:50:05.260What I've seen is if you you have an ML team internally that is powerful and strong,
612
00:50:05.580 -->
00:50:13.645then they might tell you about this and you might think about it upfront, but many companies don't, and then they they don't think about it in that sense.
613
00:50:13.965 -->
00:50:17.165And as you continue to explore
614
00:50:17.245 -->
00:50:25.440and work in this space and keep tabs on the ways that the industry is evolving, what are some of the predictions or
615
00:50:25.520 -->
00:50:30.800hopes that you see for the future of RAG systems and context engineering
616
00:50:30.800 -->
00:50:36.160and just the overall space of data driven LLM and agentic applications?
617
00:50:38.445 -->
00:50:39.005So...
618
00:50:39.565 -->
00:50:42.765Yeah. First of all, I think retrieval will continue to evolve,
619
00:50:43.245 -->
00:50:49.005not... Probably without much the g. The g is still... Some people still use NaiveRag
620
00:50:49.005 -->
00:50:57.550in in the old way, and it's available for them. But I think more and more will go in... Certainly go into AgenTik, and we'll just use the retrieval part where it fits
621
00:50:57.790 -->
00:51:05.630and continue to improve that. I still see new embedding models being created that are better, new ranking models that are better. So there's there's still work to do.
622
00:51:06.295 -->
00:51:07.335People use
623
00:51:07.495 -->
00:51:09.015glossaries, for example,
624
00:51:09.335 -->
00:51:09.895to...
625
00:51:10.295 -->
00:51:15.655And build models that are specific. They're fine tuned specifically to that particular
626
00:51:16.055 -->
00:51:16.855industry,
627
00:51:17.015 -->
00:51:20.455which helps with fields. So there's a lot a lot more to do in retrieval and search.
628
00:51:21.170 -->
00:51:23.170I definitely think we will see the
629
00:51:23.490 -->
00:51:24.370retrieval
630
00:51:24.370 -->
00:51:27.250of other systems that you connect to directly
631
00:51:27.410 -->
00:51:31.890using a MCP tool or something like this become better and
632
00:51:32.130 -->
00:51:33.090create better results.
633
00:51:33.835 -->
00:51:36.635I still see a a big gap in the multimodality
634
00:51:36.635 -->
00:51:41.195in that respect, and I hope those those vendors will will keep improving that as well.
635
00:51:41.595 -->
00:51:44.155So that's one thing. Context engineering,
636
00:51:44.235 -->
00:51:47.515again, is... Can used to be a buzzword that's very popular.
637
00:51:48.570 -->
00:51:52.730It kinda goes into what people think of as memory systems now.
638
00:51:53.290 -->
00:51:56.650So people talk about, like, the immediate memory, like,
639
00:51:57.210 -->
00:51:59.850in a in a particular session in a chatbot.
640
00:52:00.330 -->
00:52:09.845How do we talk, you know, back and forth me in the chatbot? And so if I say something that we talked about before, I wanna remember that. That's the simplest form. But then there's things like,
641
00:52:10.164 -->
00:52:12.565oh, twenty days ago, we talked about something
642
00:52:13.204 -->
00:52:14.405related to,
643
00:52:14.964 -->
00:52:16.885I don't know, maybe
644
00:52:17.200 -->
00:52:18.880different banks in my area.
645
00:52:19.600 -->
00:52:28.160And I told you, the agent, that I like this bank, so don't ask me that again. So, like, historical context of earlier conversations.
646
00:52:28.480 -->
00:52:31.680And I think, both of these are really interesting,
647
00:52:31.760 -->
00:52:34.775and people attack them in kind of, different ways.
648
00:52:35.335 -->
00:52:42.135But I think, again, that'll probably be commoditized and be, like, certain two or three approaches that people do, and they'll be really easy to use.
649
00:52:42.454 -->
00:52:47.095In terms of agents, of course, I think there's a lot of interesting things coming up. So one...
650
00:52:47.720 -->
00:52:52.920And let me talk about regular agents and then coding agents because I like talking about coding agents separately too.
651
00:52:53.079 -->
00:52:54.280On regular agents,
652
00:52:54.519 -->
00:53:02.760you know, the agent... The LLMs do really well with calling tools and deciding what to do with agents. There's no doubt about it. If you compare it to a year ago, it's incredibly better.
653
00:53:03.575 -->
00:53:08.455But we've seen the agents move to what's called long term horizon
654
00:53:08.535 -->
00:53:09.575sort of things.
655
00:53:09.974 -->
00:53:11.655And I think they'll still suffer
656
00:53:12.295 -->
00:53:16.295from accuracy when the task is... Takes a lot of steps
657
00:53:16.779 -->
00:53:19.099Because what happens is the context becomes
658
00:53:19.500 -->
00:53:20.540sort of like
659
00:53:21.980 -->
00:53:29.259poison a little bit. There's like what's called context rot a little bit. And it'll start doing the wrong things a little bit or asking questions again.
660
00:53:30.015 -->
00:53:36.815So for example, when I use a coding agent like Cloud Code or Codex, a lot of times when I use the same session for a long time,
661
00:53:37.855 -->
00:53:39.615after about 200,000
662
00:53:39.615 -->
00:53:41.615tokens or something, I start seeing it
663
00:53:41.934 -->
00:53:43.934not act as well. And I
664
00:53:44.079 -->
00:53:55.599sometimes benefit from, like, killing it starting a new session. Right? So there's... This happens in regular agents too. And I think we're... We have to... As an industry, I'm looking forward to seeing what solutions people come up for for that.
665
00:53:56.475 -->
00:53:59.835On coding agents, I think we're seeing this interesting
666
00:54:00.315 -->
00:54:06.715evolution from one coding agent to a swarm of agents. And that's really something we're working on at Band
667
00:54:07.515 -->
00:54:11.435about creating this... Using Band to... Which is agent agent communication
668
00:54:12.099 -->
00:54:15.140to create this idea of multiple coding agents
669
00:54:15.460 -->
00:54:18.819that talk to each other to solve a problem, that that collaborate
670
00:54:18.819 -->
00:54:19.540together.
671
00:54:19.700 -->
00:54:22.740Just like we humans in a team can collaborate together. Right?
672
00:54:23.300 -->
00:54:25.140So I think this idea of
673
00:54:25.645 -->
00:54:26.765coding agents
674
00:54:26.765 -->
00:54:41.599that specialize in a particular area, so you can have a coding agent to write a code, a coding agent to plan, a coding agent to review the code or to review the plan, a coding agent for compliance, a coding agent for machine learning, for design, for different roles.
675
00:54:42.400 -->
00:54:49.040And they have a very precise context. They don't have context of everything, so they can work more precisely on each of these.
676
00:54:49.599 -->
00:55:01.984And then they collaborate and hand off work to each other as needed when they need to develop code for us and and do that. So I think in my mind, this will create a a much better outcome for everybody.
677
00:55:02.224 -->
00:55:03.744And especially if you use
678
00:55:04.865 -->
00:55:08.305multiple agents, you can take advantage of
679
00:55:08.799 -->
00:55:17.119Clubcode and Codex and Copilot and, I know, Kiro or everybody else. And there's gonna be so many of these, coding agents produced in the antigravity.
680
00:55:17.520 -->
00:55:20.000Because every one of those has a little bit of a different harness,
681
00:55:20.815 -->
00:55:22.495so it behaves a little bit differently.
682
00:55:22.655 -->
00:55:30.655It has a different LLM that drives it. So you will see... You will keep seeing them. I think we all will keep seeing them sort of have
683
00:55:30.655 -->
00:55:31.855different personalities,
684
00:55:31.855 -->
00:55:33.375different, like, strength and weaknesses.
685
00:55:34.430 -->
00:55:35.710And as we get to
686
00:55:35.950 -->
00:55:38.030complex code generation,
687
00:55:38.910 -->
00:55:40.590long horizon tasks,
688
00:55:40.830 -->
00:55:45.150benefiting from sort of adversarial review and seeing multiple,
689
00:55:45.310 -->
00:55:47.950points of view would actually create higher quality outcomes.
690
00:55:49.225 -->
00:55:51.705Are there any other aspects of
691
00:55:51.865 -->
00:55:59.305the work that you're doing in this space or just the overall challenge of building and operating and maintaining these
692
00:55:59.305 -->
00:56:03.545rag based systems that we didn't discuss yet that you'd like to cover before we close out the show?
693
00:56:04.800 -->
00:56:20.685Well, I wanted to mention one more area, which is kinda SQL based data that we haven't talked about, and that's interesting. So there is a lot of work in text to SQL. And, again, think of it as a tool that agents might call. The reason it's interesting is very obvious, right? Like most mission critical
694
00:56:20.845 -->
00:56:21.565data
695
00:56:21.885 -->
00:56:29.325is still in databases, in Snowflake or Databricks or Microsoft or whatever it is, right? And Text to SQL is going through...
696
00:56:29.805 -->
00:56:38.430First of all, it's really good, Right? It's still... It it is pretty good now. And it's gonna get better over time. There's models being developed specifically to solve this problem.
697
00:56:39.550 -->
00:56:41.070But I think one of the
698
00:56:41.310 -->
00:56:42.510the interesting
699
00:56:43.070 -->
00:56:44.030things that are happening
700
00:56:44.875 -->
00:56:49.035is it's related to this world of semantic modeling, right? There's
701
00:56:49.915 -->
00:56:55.515was Looker that started this, and there's now the new version of this called Malloy, which is open source.
702
00:56:55.915 -->
00:57:02.280And there's other companies that do this kind of thing to build semantic models to enable enterprise to
703
00:57:02.360 -->
00:57:03.640sort of define
704
00:57:04.120 -->
00:57:09.320what something means in SQL. Because the LM, again, like with REG, doesn't have context
705
00:57:09.400 -->
00:57:10.680of what things mean.
706
00:57:11.160 -->
00:57:14.120So if you ask it, tell me about the churn
707
00:57:14.744 -->
00:57:16.825in our recent customer base,
708
00:57:16.984 -->
00:57:26.984churn can be defined as somebody that dropped off for fifteen days or thirty days or a hundred days or whatever. So there's no definition the LM knows is the the absolute truth.
709
00:57:28.040 -->
00:57:37.880And so the ability to define this is really important. And it was important before we had this with data and analysts and things like this, but now we have to define it for agents
710
00:57:38.119 -->
00:57:43.640because there's gonna be so many more agents asking so many more questions out of these stacks of SQL pipelines
711
00:57:43.914 -->
00:57:50.395that we need to enable, make sure that if agents are gonna do this at scale and we can trust it, it has to be enabled.
712
00:57:50.875 -->
00:57:52.714So it's just one thing I wanted to mention,
713
00:57:53.194 -->
00:57:55.035that we didn't didn't cover.
714
00:57:55.994 -->
00:58:03.530Yeah. That's definitely still an interesting space, and I see the word semantic layer and semantic modeling
715
00:58:03.530 -->
00:58:07.850probably at least once a day, definitely multiple times a week these days.
716
00:58:08.730 -->
00:58:24.075Alright. Well, for anybody who wants to get in touch with you and follow along with the work that you're doing, I'll have you add your preferred contact information to the show notes. And as the final question, I'd like to get your perspective on what you see as being the biggest gaps in the tooling technology or human training that's available for AI systems today.
717
00:58:25.250 -->
00:58:29.170The thing that... First of all, let me start with human training.
718
00:58:29.410 -->
00:58:31.650I still see a huge gap
719
00:58:31.810 -->
00:58:49.585in terms of people adopting AI. Now I think you and I and maybe others in the audience, some of us live in the tech world, and it's... We track these things every... We try our best actually to track these things every day. Right? It's it's so difficult. There's, like, 50 things happening every week, and it's hard to to keep track of everything. But,
720
00:58:50.625 -->
00:58:57.980AI is so powerful and so useful in a lot of different ways. And I'd love to see more. I see a lot, but I'd love to see more
721
00:58:58.140 -->
00:59:00.940people and companies help with education
722
00:59:00.940 -->
00:59:01.660of
723
00:59:02.060 -->
00:59:05.020everybody of how to take advantage of AI.
724
00:59:05.260 -->
00:59:06.940This started from people
725
00:59:07.095 -->
00:59:12.215don't even know how to use ChatGPT. Now I think more people know how to use that, but, like, how to use it effectively,
726
00:59:12.935 -->
00:59:18.215how to connect it to your your own, you know, systems and things like this. Very, very important.
727
00:59:18.615 -->
00:59:23.330I also... And a little bit in a narrower context, but related to that, I think
728
00:59:23.810 -->
00:59:26.850the education system itself, the education industry,
729
00:59:26.930 -->
00:59:30.290teaching, you know, kids, teaching adults
730
00:59:30.370 -->
00:59:31.890that do later education,
731
00:59:32.210 -->
00:59:33.810I think has to change. Right?
732
00:59:34.365 -->
00:59:35.805We have to integrate,
733
00:59:35.885 -->
00:59:42.605in my mind, how to use AI effectively in every part of education. And it's a massive shift
734
00:59:42.845 -->
00:59:47.325that has to happen because learning, memorizing things, and and,
735
00:59:47.565 -->
00:59:48.525kind of
736
00:59:50.010 -->
00:59:53.850answering questions based on memory is just not gonna work anymore.
737
00:59:54.250 -->
00:59:56.650I'm very well connected to the education
738
00:59:57.370 -->
01:00:02.090ecosystem here in in Silicon Valley, and I've seen this a lot in the last couple of years
739
01:00:02.945 -->
01:00:07.585where teachers are looking for help too. How do I how do I teach Python?
740
01:00:08.065 -->
01:00:09.345Like, how do I test?
741
01:00:09.665 -->
01:00:22.530Like, because the the test is usually solve this problem, and you give it to the coding agent. And the second letter, you have the answer. So I think people need help, not just, learning how to use AI, but how to teach AI. So I'm really looking forward to seeing how that...
742
01:00:22.850 -->
01:00:28.850And I know a lot of people are working on it. I'm not saying it's not solved, but it's it's it's, I'd like to see, people help with that.
743
01:00:29.615 -->
01:00:34.734Yeah. And, generally, I'm really excited to see what some of the commercial labs,
744
01:00:34.895 -->
01:00:36.575come up with. I know there's a lot of,
745
01:00:36.974 -->
01:00:38.655people that's, kind of,
746
01:00:39.295 -->
01:00:41.615came out of the labs now or starting a lot of new
747
01:00:43.140 -->
01:00:43.940companies,
748
01:00:43.940 -->
01:00:44.500like,
749
01:00:45.300 -->
01:00:47.940you know, Ilia and his company, SSI,
750
01:00:47.940 -->
01:00:49.780and Thinking Machines,
751
01:00:49.859 -->
01:00:50.580and and
752
01:00:50.820 -->
01:00:57.460Coral Automation, and other companies like that that are trying to solve the next generation of of LMs. And also
753
01:00:58.065 -->
01:01:01.265very excited about image and video generation. I think,
754
01:01:02.224 -->
01:01:04.545I've been tracking that space a little bit too. And,
755
01:01:05.905 -->
01:01:08.385kind of the way I like to characterize it, I feel like it's,
756
01:01:08.945 -->
01:01:12.385it's in a GPT two, GPT three moment of its evolution.
757
01:01:12.960 -->
01:01:16.640It's very powerful. We use it all the time, but I think it's...
758
01:01:16.960 -->
01:01:20.080The potential will be unlocked in maybe a couple years.
759
01:01:20.560 -->
01:01:23.360We're all gonna see this amazing innovation
760
01:01:24.000 -->
01:01:24.480and,
761
01:01:24.800 -->
01:01:28.560much more, direct use cases that are that are more immediate in that sense.
762
01:01:29.214 -->
01:01:30.095Absolutely.
763
01:01:30.095 -->
01:01:52.020Well, thank you very much for taking the time today to join me and share the work that you've been doing and some of your insights on how to evaluate rag systems and get them running well production. It's definitely a very interesting and continually complex problem and one that keeps shifting. So I appreciate you taking the time to share your insights on that, and I hope you enjoy the rest of your day.
764
01:01:52.500 -->
01:01:53.619Thanks, Tobias.
765
01:01:53.940 -->
01:01:55.540Glad to be here. Thanks for having me.
766
01:02:01.425 -->
01:02:09.780Thank you for listening. Don't forget to check out our other shows. The data engineering podcast covers the latest on modern data management, and podcast.init
767
01:02:09.780 -->
01:02:13.860covers the Python language, its community, and the innovative ways it is being used.
768
01:02:14.100 -->
01:02:24.730Visit the site to subscribe to the show, sign up for the mailing list, read the show notes. And if you've learned something or tried out a project from the show, then tell us about it. Email hosts@aiengineeringpodcast.com
769
01:02:24.730 -->
01:02:25.450with your story.