Inside LinkedIn's cognitive memory agent for agentic personalization深入了解 LinkedIn 用于智能体个性化的认知记忆代理

Ryan is joined by Praveen Bodigutla, Principal AI Researcher at LinkedIn, to chat about the four-layer memory system his team built to give LinkedIn's hiring assistant a persistent, personalized state. Ryan 邀请了 LinkedIn 的首席 AI 研究员 Praveen Bodigutla,共同探讨其团队构建的四层记忆系统,该系统旨在为 LinkedIn 的招聘助手提供持久且个性化的状态支持。

The Stack Overflow Podcast cover art

Praveen explains why his team moved off GraphRAG in favor of a tree-structured memory for faster incremental updates and how they balance retrieval freshness, latency budgets, and access control at LinkedIn's scale.Praveen 解释了为什么他的团队放弃了 GraphRAG,转而采用树状结构记忆以实现更快的增量更新,并介绍了他们如何在 LinkedIn 的规模下平衡检索时效性、延迟预算和访问控制。

Connect with Praveen on LinkedIn.在 LinkedIn 上与 Praveen 建立联系。

Congrats to Populist badge winner Luka Ganić, who answered SVG image as button in Flutter so well it outscored the accepted answer!恭喜 Populist 徽章获得者 Luka Ganić,他关于“在 Flutter 中将 SVG 图像作为按钮”的回答非常出色,得分甚至超过了被采纳的答案!

TRANSCRIPT

Ryan Donovan (00:00)Ryan Donovan (00:00)

Hello, everyone, and welcome to the Stack Overflow Podcast, a place to talk all things software and technology. I'm your host, Ryan Donovan, and today we are talking about a very, very large agentic memory operation there they put together at LinkedIn. And my guest for that is Praveen Badagutla, who is a principal AI大家好,欢迎收听 Stack Overflow 播客,这是一个探讨软件和技术所有相关话题的地方。我是主持人 Ryan Donovan。今天我们要讨论的是 LinkedIn 构建的一个非常、非常庞大的智能体记忆操作。我的嘉宾是首席 AI 研究员 Praveen Bodigutla。

He's a principal AI researcher over at LinkedIn. So welcome to the show, Praveen.他是 LinkedIn 的首席 AI 研究员。欢迎来到节目,Praveen。

Praveen Bodigutla (00:35)Praveen Bodigutla (00:35)

Thank you, very nice to meet you, Ryan.谢谢,很高兴见到你,Ryan。

Ryan Donovan (00:37)Ryan Donovan (00:37)

Yeah. Glad you could be here. So before we get into the the topic today, tell us a little bit about how you got into software and technology.很高兴你能来。在进入今天的主题之前,先跟我们聊聊你是如何进入软件和技术领域的吧。

Praveen Bodigutla (00:47)Praveen Bodigutla (00:47)

as I said, I'm a principal AI researcher at LinkedIn and I lead a few foundation efforts, including the memory agent as well as like being the founding engineer and led some of the AI product development, both for the enterprise as well as the consumer side. the journey to where I'm right now and how I landed here is pretty nonlinear. I actually正如我所说,我是 LinkedIn 的首席 AI 研究员,负责领导几个基础项目,包括记忆代理,同时也是创始工程师,领导了企业端和消费者端的 AI 产品开发。我走到今天这一步的历程是非线性的。我实际上……

Ryan Donovan (01:08)Ryan Donovan (01:08)

Mm-hmm.嗯哼。

Praveen Bodigutla (01:09)Praveen Bodigutla (01:09)

started as a platform engineer at Yahoo a long time ago after.很久以前在雅虎担任平台工程师。

Finishing my undergrad in like computer science and economics. Then I did like a couple of masters in financial mathematics as well as data sciences from Stanford and NYU, where I got the opportunity to work with some of the renowned professors such as like Andrew Ng, Kyun Kyoon Chou, and Jeffrey Ullman. In my past life, I was a quant developer at the Investment Bank in New York. And after that I joined Alexa, where I worked on dialogue model research.在完成计算机科学和经济学的本科学习后,我又在斯坦福大学和纽约大学获得了金融数学和数据科学的硕士学位。在那里,我有机会与 Andrew Ng、Kyunghyun Cho 和 Jeffrey Ullman 等著名教授共事。在过去,我曾在纽约的一家投资银行担任量化开发人员。之后我加入了 Alexa,从事对话模型研究。

So the central theme of the career has been innovating on the side of AI and building platforms因此,我职业生涯的核心主题一直是 AI 领域的创新和平台构建。

Ryan Donovan (01:51)Ryan Donovan (01:51)

Uhhuh.嗯哼。

Praveen Bodigutla (01:52)Praveen Bodigutla (01:52)

so that the innovation translates into useful products for the end users.这样创新就能转化为对最终用户有用的产品。

Ryan Donovan (01:58)Ryan Donovan (01:58)

Yeah. and I think, you know, we're we're talking about something today that that feels like a a big i innovation in a space that a lot of people are talking about, the agentic memory and context layers. now you all built a whole cognitive memory agent that that serves something. Can you give us a little little overview of what the project was? Praise.是的。我认为今天我们讨论的话题在大家热议的领域中是一项重大创新,即智能体记忆和上下文层。你们构建了一个完整的认知记忆代理来服务于某些功能。你能简单概述一下这个项目吗?Praveen。

Praveen Bodigutla (02:25)Praveen Bodigutla (02:25)

Right,好的,

so let's start with like why we actually build the cognitive memory agent.我们先从为什么要构建这个认知记忆代理谈起。

Ryan Donovan (02:30)Ryan Donovan (02:30)

Yeah, that's a good start. Yeah.是的,这是一个很好的切入点。

Praveen Bodigutla (02:32)Praveen Bodigutla (02:32)

So LinkedIn has developed and successfully launched this hiring agent or hiring assistance for the recruiters to manage their hiring workflows. And what we observed was through these interactions that the recruiter had with these agents, they expressed some of their hiring preferences and also they refined the role that they're hiring for.LinkedIn 开发并成功推出了招聘助手,帮助招聘人员管理招聘工作流程。我们在招聘人员与这些智能体的互动中观察到,他们会表达一些招聘偏好,并细化所招聘职位的要求。

Not only do they mention like where they are hiring for and also what are the skills that they're interested in, they also give direct feedback on the candidates that were shown to them. So what we observed was there is stickiness to these preferences, which actually translate to how they define a role on similar titles and other roles that they're hiring for. So in order to provide this really true agentic experience for recruiters.他们不仅提到招聘地点和感兴趣的技能,还会对系统展示的候选人给出直接反馈。我们观察到这些偏好具有粘性,这会影响他们如何定义类似职位的标题以及其他招聘需求。为了给招聘人员提供真正意义上的智能体体验,我们希望提供这个个性化层,这就是认知记忆代理的起源,它为我们的智能体提供了状态概念。

We wanted to provide this personalization layer, and that is the genesis of the cognitive memory agent, which gives this concept of state for our我们希望为用户(在本例中是与之互动的招聘人员)提供个性化层,这就是认知记忆代理的起源,它为我们的智能体提供了状态概念。

Ryan Donovan (03:32)Ryan Donovan (03:32)

Mm-hmm.

Praveen Bodigutla (03:33)Praveen Bodigutla (03:33)

for our agents, which the users, which in this case are recruiters who were interacting with that. And why a memory agent is because we wanted to not just fetch context, but also manage the entire life cycle of memory or the whole memory flywheel, starting from为什么需要记忆代理呢?因为我们不仅想获取上下文,还想管理整个记忆生命周期或整个记忆飞轮,从……

Understanding what's ingested, what's retrieved,理解输入的内容、检索的内容,

Ryan Donovan (03:54)Ryan Donovan (03:54)

Mm-hmm.

Praveen Bodigutla (03:55)Praveen Bodigutla (03:55)

how it is contextually relevant, and how is it even organized and updated. So the memory agent basically manages this entire flywheel and provides this deep personalization for our end users. And that was the reason why we developed the memory agent.它是如何具有上下文相关性的,以及它是如何被组织和更新的。记忆代理基本上管理着整个飞轮,并为我们的最终用户提供深度个性化服务。这就是我们开发记忆代理的原因。

Ryan Donovan (04:13)Ryan Donovan (04:13)

Yeah. And I I think it's it's interesting you mentioned state and it's not just a sort of session conversational state. It's not just a sort of preferences state. Like it's a a whole it's a three layer sort of burrito of state here. can you talk about the what those three layers are and and and why you needed three layers?是的。我觉得你提到的“状态”很有趣,它不仅仅是一种会话状态,也不仅仅是一种偏好状态。它就像一个三层的“状态卷饼”。你能谈谈这三层是什么,以及为什么需要三层吗?

Praveen Bodigutla (04:37)Praveen Bodigutla (04:37)

Right, so the three layers or like the four layers or rather the memory that we use within our memory agent are one of them is the conversation memory, which is let's say you and I are interacting right now and we are expressing our preferences in terms of like different the tasks that we are trying to achieve. So that's most recent and that's up to date, and that's the information we have. Then we have on the other end our semantic memory layer, which is好的,记忆代理中使用的三层或四层记忆,其中之一是会话记忆。比如你和我现在正在互动,我们表达了对试图完成的任务的偏好。这是最新的信息。另一端是我们的语义记忆层,它是……

the aggregated information of the user based on the interactions and preferences that they have expressed across sessions. And as you know, on LinkedIn we have different product offerings and different surfaces where the users interact with, and recruiters not only use the hiring assistant agent but also use a search platform to look for candidates. So they express those preferences there. So we want to make sure that.基于用户在不同会话中表达的互动和偏好而汇总的信息。如你所知,LinkedIn 有不同的产品和界面供用户互动,招聘人员不仅使用招聘助手,还使用搜索平台寻找候选人。他们在那里也表达了偏好。因此,我们希望确保用户拥有良好的体验,即我们了解他们的需求,并为他们个性化整个体验。语义层不仅汇总了用户与智能体之间不同互动的信息,还基于他们在相关产品服务中的活动。

The experience that the users have is we know what they're looking for and we are personalizing the whole experience for them. So the the semantic layer aggregates information not just across different interactions that the user has with the agent, but also they're based on their activities that they have on related product services as well. Now, in between, we also have the episodic store, which gives this temporal querying layer where在两者之间,我们还有情景存储,它提供了时间查询层,我们可以借此识别用户最近执行的相关活动。它不仅提供了信号的特异性,还提供了出处。假设我们汇总了信息,现在可以追溯到哪些活动促成了我们得出该用户偏好的结论。最后但同样重要的是程序记忆层。每一位用户、每一位招聘人员,即使他们在招聘相似的职位,其互动方式、权衡取舍以及表达的偏好也非常不同。有些人可能……

we can identify that hey what are the most recent relevant activities that this user performed. So it not only provides like the specificity of the signal and also provides provenance. Let's say we aggregate information, we can now trace it back to, what were the activities that went in that helped us to come to this conclusion that this is the preference of the end user. And the last but not least is the procedural memory layer. Every user, every recruiter if they're actually interacting with the更看重地点和工作类型,而其他人可能更看重资历和职位的特定方面。因此,用户如何完成这些任务(在本例中是招聘工作)的“方法”被捕获在程序记忆中。

agent, even if they're hiring for similar roles, the way they interact, the trade-offs they make and the preferences they express are very different. Some of them might……在与智能体互动时,即使是招聘类似的职位,他们互动的方式、做出的权衡和表达的偏好都非常不同。有些人可能……

Ryan Donovan (06:35)Ryan Donovan (06:35)

Mm-hmm.

Praveen Bodigutla (06:35)Praveen Bodigutla (06:35)

be actually have put more weight on the location and workplace type as opposed to others might be putting more information on seniority and specific aspects of the role. So the how of how the user actually achieves these tasks, in this case the hiring job, that is captured in the procedural memory. So可能更看重地点和工作类型,而其他人可能更看重资历和职位的特定方面。因此,用户如何完成这些任务(在本例中是招聘工作)的“方法”被捕获在程序记忆中。

The memory is this layered cake of like conversational, episodic, procedural, and semantic memory which captures information at different granularity and specificity.记忆就像是一个分层的蛋糕,由会话、情景、程序和语义记忆组成,在不同的粒度和特异性水平上捕获信息。

Ryan Donovan (07:09)Ryan Donovan (07:09)

Hmm. and I you know, there's the the sort of three end buckets for state, but or or four. but I the it all comes from basically a single data stream, right? Sort of the the discussions, interactions on the site. what's the challenge of extracting these separate sort of behavioral state markers?嗯。虽然有三个或四个用于状态的存储桶,但它们基本上都来自单一的数据流,对吧?即网站上的讨论和互动。提取这些不同的行为状态标记的挑战是什么?

Praveen Bodigutla (07:38)Praveen Bodigutla (07:38)

Right, so if you look at the stream of conversations, so there are two different sets of data sources. One, let's say the interaction that the recruiter or the user has with the agents. And if we talk specifically about that, your context can bloat up as you accumulate these interactions over a period of time. Like think about the hiring process involving multiple steps. First, you have to start with the job description, then refine the job description.如果你观察对话流,会有两组不同的数据源。一组是招聘人员或用户与智能体的互动。如果我们专门讨论这一点,随着时间的推移,当你积累这些互动时,上下文会变得臃肿。比如招聘流程涉及多个步骤。首先从职位描述开始,然后细化职位描述。

Then you are shown certain candidates and then you give certain feedback on that, and then you reach out to certain candidates and you prefer some and archive others. So all of this information gets accumulated. So on runtime, we want to make sure that this is compacted correctly. So we have this ingestion service which, as it's actually looking at this interaction in real-time and near real time, tries to consolidate these. In fixed workflow agents, it's kind of like relatively easier because you know the然后向你展示某些候选人,你给出反馈,然后联系某些候选人,偏好某些人并归档其他人。所有这些信息都会积累起来。在运行时,我们希望确保它被正确压缩。因此,我们有一个摄取服务,它在实时或近实时地观察这些互动时,会尝试进行整合。在固定工作流的智能体中,这相对容易,因为你知道工作流中每一步的边界。

boundaries of each and every step in the workflow. But as we are moving towards more deep agents and advanced interactions, the the steps can be interlinked. User can first, like the recruiter can first start with, let's say, calibrating a candidate and then go back and refine it and then go back and forth between these. So identifying the right session boundaries, identifying the right interaction subtopics, and then organizing the memory and making sure that it is但随着我们转向更深度的智能体和高级互动,步骤可能会相互关联。招聘人员可以先校准候选人,然后返回并细化,在这些步骤之间来回切换。因此,识别正确的会话边界、识别正确的互动子主题,然后组织记忆并确保其可发现性,是一项挑战。这个流本身就很有挑战性,因为你必须确保在压缩时没有丢失信息,并且准确地表示了持久化的信息。最后但同样重要的是,我们还必须检索该信息。

discoverable. So that stream is challenging in its own way because you have to make sure that you have compressed it, you have not lost information, and then you have accurately represented that information that is persisted. And last but not least we have to retrieve that information too. Now……而且在互动过程中,我可能会改变我的偏好。我可能会说,你知道吗,

Ryan Donovan (09:24)Ryan Donovan (09:24)

Right.对。

Praveen Bodigutla (09:24)Praveen Bodigutla (09:24)

as as that interaction is going on, I could change my preferences. I could say, you know what,我不打算在这个特定地点招聘。也许我们看看其他技能。也许寻找具有互补技能的人。

Ryan Donovan (09:29)Ryan Donovan (09:29)

Mm.嗯。

Praveen Bodigutla (09:29)Praveen Bodigutla (09:29)

I don't want to hire in this particular location. Maybe let's actually look for a different skill.因此,当在对话过程中表达了某些偏好时,就会引出一个问题:我们如何确保最新鲜、最近的信息获得优先权?如果……

Maybe look for people with complementary skills. So when certain preferences are expressed during the course of conversation, then that brings this concept of like, hey, how do we make sure that the most fresh and recent information gets priority? And if thereRyan Donovan (09:50)

Ryan Donovan (09:50)是的。

Yeah.Praveen Bodigutla (09:50)

Praveen Bodigutla (09:50)在检索记忆和回答用户通过应用智能体提出的查询时,如果存在任何冲突,我们如何确保信息准确、新鲜、最近,且冲突得到正确处理,最重要的是在低延迟下完成。

are any conflicts while we are retrieving the memory and answering the queries that are that the user is posing via the application agent, their accurate, fresh.……且冲突得到正确处理,最重要的是在低延迟下完成。

recent and the conflicts are handled correctly and most importantly in low latency as well.且冲突得到正确处理,最重要的是在低延迟下完成。

Ryan Donovan (10:07)Ryan Donovan (10:07)

Yeah. I imagine with with something like that, a recruiter could be hiring for multiple roles. is there a difficulty, complication with sort of like, you know, hiring in multiple with multiple preference sets?是的。我想对于这样的系统,招聘人员可能会同时招聘多个职位。在处理多个偏好集时,是否存在困难或复杂性?

Praveen Bodigutla (10:25)Praveen Bodigutla (10:25)

there is difficulty, but at the same time, there is this nice carryover effect of preferences from one similar set of roles that the recruiter is hiring for. now, when we talk about the challenge here is we want to first of all understand how is our data or this preference or memory in this case organized. Now, in the hiring assistant case, we we have a natural tree like structure.确实有困难,但与此同时,招聘人员正在招聘的一组相似角色之间也存在很好的偏好迁移效应。现在的挑战在于,我们首先要了解我们的数据(或者本例中的偏好或记忆)是如何组织的。在招聘助手的案例中,我们有一个自然的树状结构。

For some of these preferences that are hired. For example, a recruiter has multiple projects that they're hiring for, and each of these projects can have their individual preferences. So that's the granular leaf level node. And then you can aggregate these preferences at the recruiter level. And then you have this cohort, like multiple recruiters. Let's say they belong to the same company, they're hiring for similar roles. They're sharing of information across these different recruiters belonging to the same cohort. So例如,招聘人员有多个招聘项目,每个项目都有各自的偏好。这是粒度最细的叶节点。然后你可以在招聘人员层面汇总这些偏好。接着你会有同类群组,比如多个招聘人员属于同一家公司,招聘相似的职位。他们会在属于同一群组的不同招聘人员之间共享信息。因此……

When we mine this information and organize it, which is aligned with the inherent structure that is present in the data and also in terms of the interactions, then it can actually become a superpower for you to like bootstrap some of these conversations for let's say new recruiters who are coming in, and now they don't have to start from scratch, they already have a blueprint of how their company is actually prioritizing in terms of the roles and the preferences that are expressed.当我们挖掘并组织这些信息时,如果它与数据中固有的结构以及互动方式保持一致,它就能成为你的超能力,帮助新入职的招聘人员引导对话,他们无需从零开始,就已经有了公司在招聘流程和工作流中如何优先考虑职位和偏好的蓝图。

through their hiring process and workflows across the different members of the same cohort.通过他们的招聘流程和工作流,以及同一群组中不同成员的表现。

Ryan Donovan (11:55)Ryan Donovan (11:55)

Mm-hmm. that's a good segue. You you talked about the this being stored as sort of like a tree structure. how are the the other layers treated? Is there a sort of one size fits all storage structure or are they all kind of a different engineering problem?嗯哼,这是一个很好的过渡。你提到它被存储为一种树状结构。其他层是如何处理的?是有一种“一刀切”的存储结构,还是它们各自都是不同的工程问题?

Praveen Bodigutla (12:14)Praveen Bodigutla (12:14)

Right, so let's look at what is the basic construct that fits everyone because we're building a platform. We're not trying to redesign and reinvent the whole platform, memory platform for every different application. And what makes every application unique? So if the memory design itself, our memory agent is the land graph agent, and it uses certain tools to access these memory layers. Now these tools are very generic.好的,让我们看看什么基本结构适合每个人,因为我们正在构建一个平台。我们不是要为每一个不同的应用程序重新设计和重造整个记忆平台。是什么让每个应用程序独一无二呢?如果记忆设计本身,我们的记忆代理是 Land Graph 智能体,它使用某些工具来访问这些记忆层。这些工具非常通用。

Like in the sense which we are actually reading and writing to episodic stores, and we are the signature or the APIs that are used for accessing these memory layers is is fixed. However, because we are using tools, you can override some of the descriptions and customize that for specific applications, preferences and logic and how they actually want to store the data. Now, so that is the memory orchestration layer in terms of how you plan, how you reason.比如我们正在读写情景存储,用于访问这些记忆层的签名或 API 是固定的。然而,因为我们使用工具,你可以覆盖一些描述,并针对特定的应用程序、偏好、逻辑以及他们实际想要存储数据的方式进行定制。所以,这就是记忆编排层,关于你如何规划、如何推理。

So that is standardized and it's a fixed like workflow in terms of how the memory is fetched and reasoned over before responding. Now, in terms of like the memory structure itself, now in the case of recruit recruiters, we had a clean, nice hierarchy, tree hierarchy of preferences for the recruiters based on the projects and also the cohort. However, the same may not work for a different application where they want to organize.它是标准化的,在如何获取记忆并在响应前进行推理方面是一个固定的工作流。现在,就记忆结构本身而言,在招聘人员的案例中,我们有一个清晰、美观的偏好树状层次结构。然而,同样的方法可能不适用于其他想要以不同方式组织数据的应用程序。

something more like as a graph. Let's say for example I'm connected to an individuals and it's not like a clear hierarchy. And then they design their own long term memory structure and preference structure and make it available. But now that you have actually exposed that structure using a standard interface or tool, now that becomes queryable. Now it's discoverable because we kind of know how to query it. Now the orchestration layer and the reasoning layer and as well as the synthesis layer remains the same.比如将其组织成图。假设我与个人相连,这就不是一个清晰的层次结构。他们设计自己的长期记忆结构和偏好结构并使其可用。但既然你已经使用标准接口或工具公开了该结构,它现在就变得可查询了。它变得可发现,因为我们知道如何查询它。编排层、推理层以及合成层保持不变。

But individual representation, let's say the long-term memory is by typically that changes. The episode boundaries could be different. For example, in certain cases, like in the recruiter case, it's single activity because it has high signal. We但个体表示(比如长期记忆)通常会发生变化。情景边界可能不同。例如,在某些情况下(如招聘人员案例),它是单一活动,因为它的信号很强。我们……

Ryan Donovan (14:23)Ryan Donovan (14:23)

Mm-hmm.

Praveen Bodigutla (14:24)Praveen Bodigutla (14:24)

want to reduce the noise, we want to increase the signal to noise ratio. But in certain cases, that activity is spawned over multiple terms. So we that becomes the episode boundary and what gets persisted. and the conservation memory more or less remains想要减少噪音,提高信噪比。但在某些情况下,活动会跨越多个术语。因此,这就成为了情景边界和持久化的内容。而会话记忆在结构上或多或少保持不变,因为这是我们正在合成的互动。程序记忆是推断记忆。因此,其中一些是挖掘出来的结构,并根据应用程序的相关性进行提取。所以,这是你在应用程序级别想要提供的定制化程度与你在平台级别提供的基本原则的结合,这些原则非常稳定、通用,并且可以同时扩展到不同的应用程序和解决方案。

The same in terms of how it is structured because this it's the interaction that we are synthesizing. and the procedural memory is inferred memory. So some of these are mined structures and based on what's relevant for the application that are extracted. So it's a combination of how much customizability that you want to provide at the application level, but at the same time at a platform level, you're providing the basic tenets in terms of the whole design, which is very……且程序记忆是推断记忆。所以其中一些是挖掘出来的结构,并根据应用程序的相关性进行提取。因此,这是你在应用程序级别想要提供的定制化程度与你在平台级别提供的基本原则的结合,这些原则非常稳定,且具有通用性,可以同时扩展到不同的应用程序和解决方案。

stable and also generalizable and scales to different applications and solutions at the same time.……且具有通用性,可以同时扩展到不同的应用程序和解决方案。

Ryan Donovan (15:13)Ryan Donovan (15:13)

Right. And and if I understand correctly you're saying all of the sort of all of the memory layers f first go through a sort of memory orchestration piece before it gets to the end application, is that right?对。如果我理解正确,你是说所有的记忆层在到达最终应用程序之前,首先都要经过一个记忆编排部分,对吗?

Praveen Bodigutla (15:24)Praveen Bodigutla (15:24)

Right. So we have like specifically an ingestion service, and you have the retrieval service and then the offline consolidation job, which consolidates all this information, removes duplicates, joins with external sources and addition, augments it with addition information, removes stale and like duplicated information and conflicting pieces of preferences. however, like the whole memory piece goes the managed memory piece goes through this ingestion.对。我们专门有一个摄取服务,还有检索服务,以及离线整合作业,它整合所有信息、删除重复项、与外部源连接,并补充额外信息,删除陈旧、重复和冲突的偏好片段。然而,整个记忆片段(即托管记忆片段)都要经过这个摄取、组织,然后是检索。

organization and then the retrieval.组织,然后是检索。

Ryan Donovan (15:57)Ryan Donovan (15:57)

so for for a long time, obviously the the way people got context and and referential information from for for AI and agents was the the RAG, the retrieval augmented generation or you know, some kind of vector database. This seems like it's it's doing a lot of, you know, pulling from multiple sources, consolidating, aggregating, determining what's what's good.长期以来,人们为 AI 和智能体获取上下文和参考信息的方式显然是 RAG(检索增强生成)或某种向量数据库。这看起来像是在做大量从多个源拉取、整合、汇总、确定什么是好的工作。

what's the the idea the how do you determine what is relevant both from each individual memory store and then from this sort of aggregated memory blob or whatever it is?你是如何确定什么是有相关性的,无论是从每个单独的记忆存储,还是从这个汇总的记忆块中?

Praveen Bodigutla (16:42)Praveen Bodigutla (16:42)

Right. So I think when we talk about relevance, we are talking about two s separate aspects of relevance. What one is where do you sync all information from? How do you know this information is relevant that you need to ingest and ingest and like make it part of your memory? And the second one is how do you retrieve relevant information? How is that typically di different from the traditional RAG where我认为当我们谈论相关性时,我们是在谈论相关性的两个不同方面。一个是:你从哪里同步所有信息?你怎么知道这些信息是相关的,需要摄取并使其成为你记忆的一部分?第二个是:你如何检索相关信息?这与传统的 RAG 有何不同?在传统 RAG 中,我提取所有内容,然后将其作为上下文提供给应用智能体来管理。

I extract everything and then just provide it as context for the application agent to manage. From the ingestion point of view, there is domain expertise that comes into picture because this application agent is tailored to solve certain tough. In this case, the recruiters are hiring and looking for candidates to fill their roles. Now, the points that we are looking at is what are the different signals that we need to consume where the recruiter has expressed preferences.从摄取的角度来看,这里引入了领域专业知识,因为这个应用智能体是为解决特定任务而定制的。在本例中,招聘人员正在招聘并寻找候选人来填补职位。我们关注的点是,我们需要消费哪些不同的信号,招聘人员在这些信号中表达了偏好。

And what is the end goal? How do we measure that like we're actually providing the right memory abstraction and making sure that it's an efficient stack and also reduces the friction and makes them much more effective and productive when they're hiring? So that is one of the key principles that we use. Like where do I find what are the different product surfaces the recruiter interacting with? What are the kind of preferences that they're providing there?最终目标是什么?我们如何衡量我们确实提供了正确的记忆抽象,并确保它是一个高效的堆栈,减少摩擦,使他们在招聘时更加高效和富有成效?这是我们使用的关键原则之一。我从哪里找到招聘人员互动的不同产品界面?他们在那里提供了什么样的偏好?

And how do we actually synthesize that information? Now we want to make this transparent as well. We don't want to just like aggregate it because they might have expressed preferences and then they're like, I didn't actually say this. So我们如何合成这些信息?我们还希望使其透明。我们不想仅仅汇总它,因为他们可能表达了偏好,然后又说:“我并没有这么说。”所以……

Ryan Donovan (18:17)Ryan Donovan (18:17)

Right.

Praveen Bodigutla (18:18)Praveen Bodigutla (18:18)

that's where the prominence space comes into picture, the traceability这就是出处空间发挥作用的地方,即溯源方面。

Ryan Donovan (18:21)Ryan Donovan (18:21)

Mm.

Praveen Bodigutla (18:21)Praveen Bodigutla (18:21)

aspect. So as we are ingesting the specific granular information in our episodic store, we whatever is synthesized, whatever is like provided. This is your preference profile, this is your graph of.当我们摄取特定粒度的信息到情景存储中时,无论合成什么,无论提供什么,这就是你的偏好概况,这是你的偏好图谱,以及你的领域智能,个性化的领域智能。每一项都是类型引用,即实际记录,你可以在其中说明这就是你所做的,这就是为什么我们认为这是你的特定偏好。

Preferences as well as this your domain intelligence, personalized domain intelligence. Each of this is type citations, which is like actual records where you say this is what you've done and this is why we think this is your particular preference. And in the future, we're also working towards providing more control to the users when they can explicitly say that, hey, I no longer think that this is the right preference for me, like forget this. And also maybe remember more additional preferences than I actually came to know and I can just provide you the help.在未来,我们还致力于为用户提供更多控制权,让他们可以明确表示:“嘿,我不认为这对我来说是正确的偏好,忘了它吧。”或者“记住比我实际知道的更多的额外偏好”,我可以提供帮助。他们可以在这里添加键值对或信息。这是从摄取的角度来看。我们也有评估场景,比如我们有三级评估。因此,当我们持久化信息到记忆中时,我们确保信息不会丢失。比如你的输入信息中存在的任何实体在持久化时都会被保留,并有相应的出处和引用。

they can add those key value pairs or information here. Now that's from the ingestion point of view. And we have evaluation scene as well like we have a three-tier evaluation. So when we persist information into memory, we make sure that the information is not lost. Like whatever entities are present your input information is actually preserved when it is persisted and has provens and citations accordingly.因此,确保我们为持久化的记忆提供高质量的评估器,也让我们有信心,这就是我们需要汇总、积累和合成的正确信息,以帮助招聘人员完成他们试图实现的任务。透明度方面也帮助他们看到我们是如何以及为什么做出某些决定的。现在,从检索的角度来看,它变得很有趣。

So making sure that we have good quality evaluators for the memory that's persisted as well gives us confidence that this is actually the right information that we need to aggregate and accumulate and synthesize to help the recruiter in their tasks that they're trying to achieve. And and the transparency aspect of it also helps them see like how and why we are making certain decisions. Now, from the retrieval standpoint, it becomes interesting.应用智能体使用一些标准模式来查询记忆。例如,每当招聘人员登录时,第一步就是获取所有信息。我们意识到这一点。我们可以预先汇总、创建缓存并使其可用。但有些模式是非标准的,更具动态性。例如,招聘人员像我之前说的那样,会从工作流的一个方面移动到另一个步骤,然后交错,表达偏好,覆盖之前的偏好。因此,从检索的角度来看,现在根据他们表达的偏好,我们必须提取正确的信息。例如,如果他们问:“嘿,我是否给过类似的活动、类似的反馈?是否有候选人是我确实给过类似反馈的?在这些方面,我在技能方面表达的偏好是什么?”

There are some standard patterns that the application agents use to query memory. For example, whenever a recruiter logs in, the first step, go fetch all the information. We are aware of that. And that we can pre-aggregate, create a cache, and make it available. But there are patterns where non-standard, which is more dynamic. For example, the recruiter is like, as I said earlier, will be moving from one aspect of那些查询是我们无法预见的。但因为我们有这种分层记忆,以及……

or the workflow to a different step and then interleaving, expressing preferences, overriding the previous ones. So from the retrieval standpoint, now based on the preferences that they have expressed, we have to extract the right information. For example, if they are like, hey, did I give similar activity similar feedback? And like were there candidates where I have actually given similar feedback, what was the preference that I was expressing in terms of skills in those aspects?……那些查询是我们无法预见的。但因为我们有这种分层记忆,以及……

Those queries we cannot anticipate. But because we have this layered memory and also……进行某种时间查询、EBR 基础检索的方法。现在我们知道在工作流中,招聘人员处于特定步骤。这是他们提供的上下文。基于上下文,获取最相关的信息片段,减少噪音,增加信号,并将其返回,以便应用智能体可以做出……

Ryan Donovan (21:05)Ryan Donovan (21:05)

Yeah.

Praveen Bodigutla (21:06)Praveen Bodigutla (21:06)

way to like do some kind of like temporal query, EBR based retrieval. Now we know that in the workflow the recruiter is at a particular step. This is the context that they've provided. Based on the context, fetch the most relevant piece of information, reduce the noise and increase the signal, and give that back so that the application agent can make.……更慎重的决定,并为招聘人员提供更有价值的信息,而不是仅仅提取他们所有的活动,这可能会导致上下文臃肿。

much more calculated decisions and provide much more valuable information to the recruiter, as opposed to just extracting all of their activity, which can cause a context bloat.……更慎重的决定,并为招聘人员提供更有价值的信息,而不是仅仅提取他们所有的活动,这可能会导致上下文臃肿。

Ryan Donovan (21:38)Ryan Donovan (21:38)

Sure, yeah. do you do you do any sort of you know, like like double counting if if somebody expresses a preference multiple times, are you like, this is a much more reliable preference that they've extract s expressed? Or is it just like yeah, that matches what we have on file?当然,是的。你们是否会进行某种(你知道的)重复计算?如果有人多次表达偏好,你们会认为“这是一个更可靠的偏好”吗?还是仅仅是“这与我们存档的内容相符”?

Praveen Bodigutla (21:57)Praveen Bodigutla (21:57)

So as of now, there is immense value that we observe even recalling that information, even with without internal prioritization of one preference and by having more value than the other one in terms of like the exact values of those preferences themselves. we have like a prioritization hue and conflict resolution policy to prioritize one layer of memory over the other.到目前为止,我们观察到即使只是回忆这些信息,即使没有对一个偏好进行内部优先排序,其价值也很大。我们有一个优先排序队列和冲突解决策略,以优先考虑一层记忆而不是另一层。然而,我们正在研究的是,加权方案如何根据他们多次表达的偏好动态演变。我的意思是,首先,我们不希望他们一次又一次地表达相同的偏好。这意味着我们引入了摩擦。如果我们没有正确合成……

And however, like what we are looking into is how does a weighting scheme like dynamically evolve based on their preferences that they have expressed multiple times. I mean, first of all, we don't want them to like express again and again the same preference there. That that means we have introduced friction. Like if we don't synthesize……并提供错误信息,他们会说:“不,不,不是在那个地点。”

Ryan Donovan (22:43)Ryan Donovan (22:43)

Right, right, right.对,对,对。

Praveen Bodigutla (22:47)Praveen Bodigutla (22:47)

this correctly and provide like incorrect information, they're like, no, no, not in that location.……并提供错误信息,他们会说:“不,不,不是在那个地点。”

Ryan Donovan (22:52)Ryan Donovan (22:52)

Right.

Praveen Bodigutla (22:52)Praveen Bodigutla (22:52)

so one of the downstream metrics, like所以下游指标之一,即……

We call the tier three metrics, which measures this helpfulness and impact on the product, also measures friction. It's like, are we actually reducing the number of turns? Are we increasing the number of terms? so that's a trade-off we have to make. Like, how much of recall and without waiting and equally weighting the information is actually helpful over prioritizing and providing the additional layer of cognition and weighting, which might put more cognitive load on the我们称之为三级指标,它衡量这种有用性和对产品的影响,也衡量摩擦。比如:我们是否真的减少了轮次?我们是否增加了轮次?这是一个我们必须做出的权衡。在没有加权、对信息进行同等加权的情况下,多少召回率实际上比优先排序并提供额外的认知和加权层更有帮助?后者可能会给成员带来更多认知负担,最终还要管理并说:“我认为这个优先级更高,这个是……”

a member to also manage at the end of the day and like say that I think this is higher priority this is……成员带来更多认知负担,最终还要管理并说:“我认为这个优先级更高,这个是……”

Ryan Donovan (23:26)Ryan Donovan (23:26)

Mm-hmm. I mean the the the sort of layers and and you know you talked about extracts and transforms, it's it's starting to sound like a sort of an ETL pipeline for the agentic era. Is that is that accurate or is there is there extra complications here?嗯哼。我的意思是,这些层以及你谈到的提取和转换,听起来像是智能体时代的 ETL 管道。这是准确的吗?还是有额外的复杂性?

Praveen Bodigutla (23:48)Praveen Bodigutla (23:48)

I think the extra complication is what makes it an ETL for agentic error, where我认为额外的复杂性正是使其成为智能体时代 ETL 的原因,其中……

Ryan Donovan (23:53)Ryan Donovan (23:53)

Ha ha ha.哈哈。

Praveen Bodigutla (23:54)Praveen Bodigutla (23:54)

instead of like just storing everything, we have to be very parsimonious and make sure that like I said, like high we are capturing signal and we're not capturing noise.我们不仅要存储一切,还必须非常节俭,确保像我说的那样,我们正在捕获信号,而不是捕获噪音。

Ryan Donovan (24:06)Ryan Donovan (24:06)

Mm.

Praveen Bodigutla (24:07)Praveen Bodigutla (24:07)

and that's what makes some of these aspects agentic, both from the ingestion as well as from the这就是使其中一些方面具有智能体特征的原因,无论是从摄取还是从……

retrieval standpoint, that we're capturing the right signal and organizing it in such a way so that it's easily discoverable, maintainable, provides all the governance as well as the access controls that are necessary, and then to provide safe retrieval and management of this memory so that there's no context pollution and also there's no accident leakage of information from different检索的角度来看,我们正在捕获正确的信号并以易于发现、可维护的方式组织它,提供所有必要的治理以及访问控制,然后提供安全检索和管理,以确保没有上下文污染,也没有信息从不该泄露的地方意外泄露。

Ryan Donovan (24:39)Ryan Donovan (24:39)

Right.

Praveen Bodigutla (24:40)Praveen Bodigutla (24:40)

places where it should not be leaked from. Yeah.……地方意外泄露。是的。

Ryan Donovan (24:44)Ryan Donovan (24:44)

Yeah.

Yeah. So that's a another excellent segue you just setting me up, Raveen. I love it. so the you know it LinkedIn is a is a pretty big scale. It's a lot of people and a lot of personal information. You talked about the the sort of access controls and safety and preventing leakages. what sort of things did you build in to make sure that the the data only goes to the the right places?这是一个很好的过渡,Praveen。我喜欢。LinkedIn 的规模非常大。用户很多,个人信息也很多。你谈到了访问控制、安全以及防止泄露。你们构建了什么来确保数据只流向正确的地方?

Praveen Bodigutla (25:11)Praveen Bodigutla (25:11)

Definitely. So there is multi-tenancy and isolation of data stores. every time when an application is actually if we set up the memory for an application, we want to make sure they have their own isolated data storage. There is no reusing or using like other applications data store. So there is clear isolation. And the other thing that we make sure is that the user who's signed in, who identify the user based on this.当然。数据存储有租户隔离。每次为应用程序设置记忆时,我们都要确保它们有自己隔离的数据存储。没有重用或使用其他应用程序的数据存储。有明确的隔离。另一件事是,我们确保登录的用户(我们基于此识别用户)正在访问他们应该访问的记忆,而不是超出此范围。当我们以我提到的这种层次结构购买此记忆时,我们还会将其标记为有权访问它的所有者。因此,我们在工作流的每一步都确保传递正确的凭据,以便访问正确的信息,并将其限制在该用户有权访问的信息范围内。

Signing credentials are accessing the memory that they should be accessing and not beyond that. And when we purchase this memory in this hierarchical structure that I was talking about, we also tag it with the owners who have access to it. So that we we we are also like in the every step of the workflow, make sure that the right credentials are passed through so that we are accessing the right information and also it's restricted to the information that this user has access to as well.……并将其限制在该用户有权访问的信息范围内。

Ryan Donovan (26:07)Ryan Donovan (26:07)

So it it there's maybe not a a whole, you know, memory system for each user, but it sounds like it's close, right?所以,可能不是为每个用户建立一个完整的记忆系统,但听起来很接近了,对吧?

Praveen Bodigutla (26:17)Praveen Bodigutla (26:17)

It's kind of provides this nice personalized memory for each user, but at the same time also helps them share with their cohort when it's allowed, and create this domain intelligence, which is specific personalized domain intelligence for that cohort. So you can它确实为每个用户提供了这种美观的个性化记忆,但同时也帮助他们在允许的情况下与群组共享,并创建领域智能,即针对该群组的特定个性化领域智能。所以你可以……

Ryan Donovan (26:36)Ryan Donovan (26:36)

Mm-hmm.

Praveen Bodigutla (26:37)Praveen Bodigutla (26:37)

manage both in the in the setting that we have with this whole nice, beautiful tree like structure.在我们要处理的这种美观的树状结构设置中,对两者进行管理。

Ryan Donovan (26:43)Ryan Donovan (26:43)

Yeah. I wanna sort of talk about the, you know, the kind of engineering trade offs here because it seems like this is a could be a lot of extra data to to store and retrieve and to to manage. are you have you been thinking about sort of like optimization strategies, how to, you know, prune data that isn't needed anymore? how to scale, you know.是的。我想聊聊这里的工程权衡,因为这看起来需要存储、检索和管理大量额外的数据。你们是否考虑过优化策略,比如如何清理不再需要的数据?以及如何进行扩展等等。

reduced amount of contact spend, all that sort of good stuff.减少上下文开销,以及所有这类有益的事情。

Praveen Bodigutla (27:14)Praveen Bodigutla (27:14)

Absolutely. to be honest, like when we started with some of the popular technologies then to even create memory, the long-term memory that I was talking about and index it, we were using GraphRag. And what we realized was it's not it's slow and it's also not cost efficient because it invokes当然。老实说,当我们刚开始使用一些流行技术来创建我刚才提到的长期记忆并对其进行索引时,我们用的是 GraphRag。但我们意识到它速度很慢,而且成本也不高,因为它会调用

Ryan Donovan (27:34)Ryan Donovan (27:34)

Yeah.

Praveen Bodigutla (27:34)Praveen Bodigutla (27:34)

a lot of LLM calls to identify the linkages between different nodes and every time to大量的 LLM 调用来识别不同节点之间的链接,并且每次都要

rebuild this index and recreate this memory with not allowing us to scale for the scale at which we're had handling at LinkedIn. so this tree like hierarchical memory organization helped us provide this incremental update optimization where we know which leaf node, which branch and what is a particular node that needs to be updated. And we just percolate that preference along that重建索引并重新创建记忆,这无法让我们在 LinkedIn 所需的规模下进行扩展。因此,这种树状的分层记忆组织帮助我们实现了增量更新优化,我们可以知道需要更新哪个叶节点、哪个分支以及具体的哪个节点。我们只需沿着那个

branch of the tree so that you're not recomputing and re-indexing the entire memory at the same time. And as you rightly pointed out, freshness and consistency are very important for us. So how we handle that is some of that I already touched upon is like when your retrieval layer is intelligent, it knows that a this is memory was updated at a particular point of time and this is the priority queue or the priority order in which I resolve树的分支进行传播,这样就不必同时重新计算和重新索引整个记忆。正如你所指出的,新鲜度和一致性对我们非常重要。我们处理它的方式正如我之前提到的,当你的检索层足够智能时,它会知道这段记忆是在特定时间点更新的,并且这是我解决

Some of the conflicts that are inherent in the data that was persisted, and use that intelligence to make sure that the right and resent and fresh memory is provided to the end user as well as the application agent, which is interfacing with the user. From the ingestion side, we touched upon that earlier when we talked about the memory compaction, right? We were like looking持久化数据中固有冲突的优先级顺序,并利用这种智能确保向最终用户以及与用户交互的应用代理提供正确、最新且新鲜的记忆。在摄取端,我们之前谈到记忆压缩时也提到过,对吧?我们当时在看

Ryan Donovan (29:03)Ryan Donovan (29:03)

Yeah.

Praveen Bodigutla (29:03)Praveen Bodigutla (29:03)

at these the queue of这些传入项的队列

incoming terms and when we are extracting these activities and if we are making decisions based on the most recent activities of the user, you have that latest information there. And sometimes using simple urge policies such as if it is longer than certain time horizon like six months or one year it's still because you're already当我们提取这些活动并根据用户的最新活动做出决策时,你就拥有了最新的信息。有时使用简单的过期策略,比如如果超过了特定的时间跨度(如六个月或一年),它仍然有效,因为你已经在

Ryan Donovan (29:30)Ryan Donovan (29:30)

Mm-hmm.

Praveen Bodigutla (29:31)Praveen Bodigutla (29:31)

synthesizing this information into your long-term memory. It's available. So using those policies also help in making sure that将这些信息综合到你的长期记忆中。它是可用的。因此,使用这些策略也有助于确保

the memory is fresh and it's记忆是新鲜的,并且是

Ryan Donovan (29:40)Ryan Donovan (29:40)

Mm-hmm.

Praveen Bodigutla (29:40)Praveen Bodigutla (29:40)

representative and it's relevant to what the user is doing right now. And and from the consistency point of view, I think we touched upon that when we talked about syncing data from different sources, identifying those relevant data sources and keeping that as part of your long-term memory.具有代表性的,并且与用户当前的操作相关。从一致性的角度来看,我认为我们在谈论从不同来源同步数据、识别相关数据源并将其作为长期记忆的一部分时已经涉及到了这一点。

Ryan Donovan (29:57)Ryan Donovan (29:57)

Yeah. y you mentioned the sort of move away from from graph rag to a more tree structure, to save on the L L calls. Are there other bits of engineering that you've done to sort of reduce the amount of AI here to to increase the determinism to save on costs?是的。你提到了从 GraphRag 转向树状结构以节省 LLM 调用。你们是否还采取了其他工程手段来减少 AI 的使用量,从而提高确定性并节省成本?

Praveen Bodigutla (30:17)Praveen Bodigutla (30:17)

Absolutely. So our retrieval layer or orchestration layer in itself is a planner synthesizer LLM layer, which basically reasons over the memory when once it's retrieved to answer these complex queries such as or insights and examples such as like what are the trade-offs that I'm making. So you have to fetch all the relevant information into that. What we noticed was flattening the planning layer.当然。我们的检索层或编排层本身就是一个规划器合成 LLM 层,它在检索到记忆后会对记忆进行推理,以回答这些复杂的查询,比如洞察和示例,例如“我正在做出的权衡是什么”。所以你必须将所有相关信息提取到其中。我们注意到,将规划层扁平化

instead of doing sequential planning, but doing one-step parallel planning, which of identifying the right set of memory tools to invoke for solving this particular query for this user based on historical information about like where do we persist and like what is the what is the most active surface for these different users. And then applying selective LLM calls for response synthesis.而不是进行顺序规划,而是进行一步式并行规划,即识别出正确的一组记忆工具来为该用户解决特定查询,这些决策基于有关我们持久化位置以及不同用户最活跃表面的历史信息。然后应用选择性的 LLM 调用进行响应合成。

If the query is just fetching records, the query can be answered just based on information that's already in the conversation. We don't have to again invoke a complex reasoning process to reason through all the memory. So carefully choosing this orchestration, building in a way so that like there is less time spent planning and what the information is actually retrieved correctly and with low latency.如果查询只是获取记录,那么仅根据对话中已有的信息就可以回答该查询。我们不必再次调用复杂的推理过程来遍历所有记忆。因此,谨慎选择这种编排,构建方式要确保减少规划所花费的时间,并确保信息被正确且低延迟地检索。

To the application agent. So bear in mind the latency budget we have as a memory agent is probably 10 to 20% of the entire response latency budget that the application has, because memory is just one part of the context. And the传达给应用代理。所以要记住,作为记忆代理,我们拥有的延迟预算可能仅占应用总响应延迟预算的 10% 到 20%,因为记忆只是上下文的一部分。而且

Ryan Donovan (31:59)Ryan Donovan (31:59)

Right.

Praveen Bodigutla (32:00)Praveen Bodigutla (32:00)

application has to fetch information from different sources to synthesize this response and present it to the user because their goal is to solve the task.应用必须从不同来源获取信息以合成响应并呈现给用户,因为他们的目标是解决任务。

Ryan Donovan (32:09)Ryan Donovan (32:09)

Mm-hmm.

Praveen Bodigutla (32:10)Praveen Bodigutla (32:10)

so we have to be extremely careful about how we design this stack so that it's providing the right contextually relevant memory but at low latency. And some of the optimization inference optimizations at the VLLM serving engine level, such as using prefix caches, chunk prefills, all all of these go help a lot in reducing the overall latency.所以我们必须非常谨慎地设计这个堆栈,以便在低延迟的情况下提供正确且上下文相关的记忆。在 VLLM 服务引擎层面的一些推理优化,例如使用前缀缓存、分块预填充,所有这些都有助于大幅降低整体延迟。

And last but最后但

Ryan Donovan (32:35)Ryan Donovan (32:35)

Mm-hmm.

Praveen Bodigutla (32:35)Praveen Bodigutla (32:35)

not least, being like very opinionated about some of the structures that you use in terms of how you respond. Like LLMs,同样重要的是,在响应结构方面要非常有主见。比如 LLM,

Ryan Donovan (32:41)Ryan Donovan (32:41)

Yeah.

Praveen Bodigutla (32:42)Praveen Bodigutla (32:42)

if you actually let it just respond with any number of arbitrary reasoning tokens, then it can go on and can increase the latency. So如果你真的让它随意响应任意数量的推理标记,那么它可能会继续下去并增加延迟。所以

Ryan Donovan (32:48)Ryan Donovan (32:48)

Right. Right.对,没错。

Praveen Bodigutla (32:51)Praveen Bodigutla (32:51)

providing that clear API where you have a structured output which follows a structured format. Also guiding the LLM to actually generate in that format and limit the number of tokens.提供清晰的 API,使用遵循特定格式的结构化输出。同时引导 LLM 按照该格式生成并限制标记数量。

that also helps in reducing the overall latency.这也助于减少整体延迟。

Ryan Donovan (33:06)Ryan Donovan (33:06)

Mm-hmm. we are at thirty three minutes here. I wanna give you a chance if there's something we haven't talked about that you wanna talk about, we can cover that. Otherwise I can ask a sort of future looking question.嗯。我们现在已经 33 分钟了。如果你还有什么我们没谈到但你想聊的话题,我可以给你机会。否则,我可以问一个展望未来的问题。

Praveen Bodigutla (33:19)Praveen Bodigutla (33:19)

So I mean I think the the future looking question or the direction is definitely interesting. so we Yeah.我的意思是,我认为展望未来的问题或方向绝对很有趣。所以我们是的。

Ryan Donovan (33:25)Ryan Donovan (33:25)

Okay. Let me let me let me let me set set you up for that. Yeah, yeah.好的。让我来为你引出这个问题。是的,是的。

S so you you mentioned early a little bit about the sort of problems you're looking at solving in the future. What what are the the other you know, what are the big things on your mind to to solve next?你之前简单提到了你未来想要解决的问题。你心中还有哪些接下来要解决的大事?

Praveen Bodigutla (33:43)Praveen Bodigutla (33:43)

Right, so we are actually investing or exploring different options from even the memory persistence layer and没错,我们实际上正在投入或探索不同的选择,甚至是从记忆持久化层以及

Ryan Donovan (33:53)Ryan Donovan (33:53)

Mm-hmm.

Praveen Bodigutla (33:53)Praveen Bodigutla (33:53)

the abstractions that we want to provide to memory to access memory. And why that is important is because as the LLMs get powerful, we are we are going into this era where L I mean LLMs are getting incre increasingly powerful and they我们想要为访问记忆提供的抽象。之所以重要,是因为随着 LLM 变得强大,我们正进入这样一个时代,即 LLM 变得越来越强大,它们

Ryan Donovan (34:07)Ryan Donovan (34:07)

Mm-hmm.

Praveen Bodigutla (34:08)Praveen Bodigutla (34:08)

have they can manage the也可以管理

Memory as well. But at the same time, you you want to provide the entire memory lifecycle using the memory agent. So given this dynamic nature of interactions that these LLMs now or deep agents allow the users to have, how does the write abstraction for memory beyond just like the tools for each and every layer, so that the memory is easily discoverable and you can记忆。但与此同时,你希望使用记忆代理来提供整个记忆生命周期。鉴于这些 LLM 或深度代理现在允许用户进行的交互具有动态性,除了每一层的工具之外,什么是正确的记忆抽象,以便记忆易于发现,并且你可以

Provide additional layer layers of optimization by changing the underlying storage layer to maybe virtual file systems. So that is one of the active areas of investments that we are currently looking at. And also the evaluation, one of the hardest problems that we have today is attribution. Like and as I said, like application agents not only fetch memory, but they're fetching information from different sources of information. So通过将底层存储层更改为虚拟文件系统来提供额外的优化层。这是我们目前正在积极投入的研究领域之一。还有评估,我们今天面临的最困难的问题之一是归因。正如我所说,应用代理不仅获取记忆,它们还在从不同的信息源获取信息。所以

Investing in robust evaluation and representative evaluation strategies to capture changes in the interaction patterns. so that is another area of like active investment that we're looking at and and further optimizations from the level of like dynamically identifying these session boundaries, compacting them, and optimizing the whole end-to-end as opposed to like optimizing individual layers separately.投资于稳健的评估和具有代表性的评估策略以捕捉交互模式的变化。这是我们正在关注的另一个积极投资领域,并从动态识别这些会话边界、压缩它们以及优化整个端到端的层面进行进一步优化,而不是单独优化各个层。

So these are all excit exciting areas of applied research and innovation that we're really looking forward to.所以这些都是我们非常期待的应用研究和创新领域。

Ryan Donovan (35:47)Ryan Donovan (35:47)

Cool. all right. well, I'm gonna take us to the outro. I'm gonna shout out somebody who earned a badge on Stack Overflow, and then I will say my name, my title, call to action, and then where I can be found on the internet, and you can do the same. Okay. Well, it is that time of the show where we shout out somebody who came on to Stack Overflow, dropped some knowledge, shared some curiosity, and earned themselves a badge. Today we're shouting out a populist badge winner.太棒了。好的。那么,我要进入结尾了。我要向一位在 Stack Overflow 上获得徽章的人致敬,然后我会说出我的名字、头衔、行动号召,以及在哪里可以在互联网上找到我,你也可以做同样的事情。好的,现在是节目时间,我们要向一位来到 Stack Overflow、分享知识、分享好奇心并赢得徽章的人致敬。今天我们要向一位“通俗”徽章获得者致敬。

Somebody who dropped an answer that was so good it outscored the accepted answer. So congrats to Luca Ganich for answering SVG image as button in Flutter. If you're curious about that, we'll have the answer for you in the show notes. My name is Ryan Donvin. I edit the blog, host the podcast here at Stack Overflow. If you have questions, concerns, topics to cover, if you want to say hi, email me at podcast at stackoverflow.com.有人给出了一个非常好的答案,以至于它的得分超过了被采纳的答案。所以恭喜 Luca Ganich 回答了“在 Flutter 中将 SVG 图像用作按钮”的问题。如果你对此感到好奇,我们会在节目笔记中为你提供答案。我叫 Ryan Donovan。我负责编辑博客,主持 Stack Overflow 的播客。如果你有疑问、顾虑、要讨论的主题,或者想打个招呼,请给我发电子邮件至 podcast@stackoverflow.com。

And if you want to reach out to me directly, you can find me on LinkedIn.如果你想直接联系我,可以在 LinkedIn 上找到我。

And probably.大概吧。

Praveen Bodigutla (36:53)Praveen Bodigutla (36:53)

Well, congratulations as well to Luca也恭喜 Luca

Ryan Donovan (36:55)Ryan Donovan (36:55)

Mm-hmm.

Praveen Bodigutla (36:56)Praveen Bodigutla (36:56)

for providing really valuable insights and input. it was a pleasure talking to you, Ryan. and this was wonderful experience sharing the technology that we have built to solve some of the memory problems for different agents. And as you rightly identified, that this is this might be the new ETL or the second brain that we are building to solve some of these提供了非常有价值的见解和输入。Ryan,和你交谈非常愉快。分享我们为解决不同代理的记忆问题而构建的技术是一次美妙的经历。正如你所正确指出的,这可能是我们正在构建的新的 ETL 或“第二大脑”,以解决其中一些

Ryan Donovan (37:19)Ryan Donovan (37:19)

Yeah.

Praveen Bodigutla (37:19)Praveen Bodigutla (37:19)

agentic interactions and代理式交互,并且

really looking forward to see how the technology pans out. This is just the beginning and there is a lot more research that we are seeing is coming our way. really happy to be sharing what we have built so far and thank you for giving the opportunity and you can definitely reach me out on LinkedIn.非常期待看到这项技术的发展。这仅仅是个开始,我们看到还有更多的研究在向我们走来。很高兴能分享我们迄今为止构建的内容,感谢你提供这个机会,你绝对可以在 LinkedIn 上联系我。

Ryan Donovan (37:37)Ryan Donovan (37:37)

Okay. And what can they learn more about the project?好的。他们可以在哪里了解更多关于该项目的信息?

Praveen Bodigutla (37:42)Praveen Bodigutla (37:42)

so some of the like we have papers that we have one of the papers was actually accepted at KDD. So I would encourage checking out the publications as well as the blog more blog posts that are coming that will come through as we develop and embark on this journey as as we explore and try to incorporate as well as develop and build the state of the art solutions for handling memory for personalization.我们有一些论文,其中一篇论文实际上被 KDD 接收了。所以我鼓励大家查看这些出版物,以及随着我们发展和踏上这段旅程而发布的更多博客文章,因为我们正在探索并尝试结合以及开发和构建最先进的解决方案来处理个性化记忆。

Ryan Donovan (38:07)Ryan Donovan (38:07)

Wonderful. Well, thank you for listening, everyone, and we'll talk to you next time.太棒了。感谢大家的收听,我们下次再见。

Add to the discussion

Login with your stackoverflow.com account to take part in the discussion.