refactor: Optimize memory fetching by moving sorting and slicing to DB #1531
+18
−14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Relates to:
No
Risks
Low
IDatabaseAdapter
, other database adapters are still working because thelimit
parameter is optional.getMemoriesByRoomIds
function can opt into thelimit
functionality, but it is not necessary.Background
What does this PR do?
This PR improves the performance of memory-fetching functionality by:
limit
parameter to restrict the number of results fetched from the database.Why was this change made?
In our database with 60,000 memories, fetching memories by room IDs took 40 seconds, significantly affecting the performance of the agent. After applying this fix, the query execution time dropped to just 0.02 seconds. This improvement was observed using Supabase analytics.
What kind of change is this?
Improvements
Documentation changes needed?
My changes do not require a change to the project documentation.
Testing
Where should a reviewer start?
packages/adapter-postgres/src/index.ts
to understand how sorting and limiting were implemented in the database query.packages/core/src/runtime.ts
for the integration of thelimit
parameter.Detailed testing steps
limit
parameter.createdAt DESC
) is maintained.Database changes
ORDER BY createdAt DESC
and optionalLIMIT
in the PostgreSQL adapter.Discord username
nikita_zhou
Screenshots
I will attach screenshots of:
Using Postgres adapter
Using SQLite adapter
Linting