This repository was archived by the owner on Jun 19, 2026. It is now read-only.
align SupabaseVectorStore ID handling with JS lib#137
Merged
Mason Daugherty (mdrxy) merged 3 commits intoNov 5, 2025
Merged
Conversation
Make from_texts consistent with add_texts by respecting custom ids.
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR modifies the Supabase vector store to make the ids parameter optional and delegates ID generation to the Supabase database. Previously, the code automatically generated UUIDs when IDs were not provided; now it allows the database to handle ID generation via auto-increment or default values.
Key changes:
- Removes automatic UUID generation from
add_texts()andfrom_texts()methods - Makes the
idsparameter optional inadd_vectors()and_add_vectors()signatures - Conditionally includes the
idfield in row data only when IDs are explicitly provided
Comments suppressed due to low confidence (2)
libs/community/langchain_community/vectorstores/supabase.py:372
- The variable name
idson line 368 shadows the function parameteridsfrom line 340. This creates confusion and could lead to bugs if the parameter needs to be referenced later. Rename the local variable to something likereturned_idsorchunk_ids.
id_list: List[str] = []
for i in range(0, len(rows), chunk_size):
chunk = rows[i : i + chunk_size]
result = client.from_(table_name).upsert(chunk).execute()
if len(result.data) == 0:
raise Exception("Error inserting: No rows added")
# VectorStore.add_vectors returns ids as strings
ids = [str(i.get("id")) for i in result.data if i.get("id")]
id_list.extend(ids)
return id_list
libs/community/langchain_community/vectorstores/supabase.py:368
- When IDs are not provided and the database generates them, this line filters out any results where
i.get('id')is falsy (None, 0, empty string, etc.). If the database uses integer IDs starting from 0, the ID 0 would be filtered out. Use explicitis not Nonecheck instead:[str(i.get('id')) for i in result.data if i.get('id') is not None].
ids = [str(i.get("id")) for i in result.data if i.get("id")]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary
This PR
from_textsandadd_textsmethods)When IDs aren't provided, the database is now responsible for generating them instead of the library forcing UUID strings.
Why need this change
The current Python implementation has several limitations compared to the TypeScript version especially when I use
SupabaseVectorStore.from_documents:from_textsmethod (which is called byfrom_documentsmethod), preventing use ofAUTO_INCREMENT,SERIAL, or custom ID strategiesfrom_texts()methodWhat's the solution
add_texts()andfrom_texts()methodsadd_vectors()and_add_vectors()methodsuuidimportWhen IDs are provided:
When IDs are NOT provided: