Skip to content

Commit 8e61bc7

Browse files
authored
feat: Add table name to default index name (#171)
1 parent 9745c47 commit 8e61bc7

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

src/langchain_google_cloud_sql_pg/indexes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ class DistanceStrategy(StrategyMixin, enum.Enum):
3434

3535

3636
DEFAULT_DISTANCE_STRATEGY = DistanceStrategy.COSINE_DISTANCE
37-
DEFAULT_INDEX_NAME = "langchainvectorindex"
37+
DEFAULT_INDEX_NAME_SUFFIX: str = "langchainvectorindex"
3838

3939

4040
@dataclass
4141
class BaseIndex(ABC):
42-
name: str = DEFAULT_INDEX_NAME
42+
name: Optional[str] = None
4343
index_type: str = "base"
4444
distance_strategy: DistanceStrategy = field(
4545
default_factory=lambda: DistanceStrategy.COSINE_DISTANCE

src/langchain_google_cloud_sql_pg/vectorstore.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from .engine import PostgresEngine
2929
from .indexes import (
3030
DEFAULT_DISTANCE_STRATEGY,
31-
DEFAULT_INDEX_NAME,
31+
DEFAULT_INDEX_NAME_SUFFIX,
3232
BaseIndex,
3333
DistanceStrategy,
3434
ExactNearestNeighbor,
@@ -902,31 +902,37 @@ async def aapply_vector_index(
902902
filter = f"WHERE ({index.partial_indexes})" if index.partial_indexes else ""
903903
params = "WITH " + index.index_options()
904904
function = index.distance_strategy.index_function
905-
name = name or index.name
905+
if name is None:
906+
if index.name == None:
907+
index.name = self.table_name + DEFAULT_INDEX_NAME_SUFFIX
908+
name = index.name
906909
stmt = f'CREATE INDEX {"CONCURRENTLY" if concurrently else ""} {name} ON "{self.table_name}" USING {index.index_type} ({self.embedding_column} {function}) {params} {filter};'
907910
if concurrently:
908911
await self.engine._aexecute_outside_tx(stmt)
909912
else:
910913
await self.engine._aexecute(stmt)
911914

912-
async def areindex(self, index_name: str = DEFAULT_INDEX_NAME) -> None:
915+
async def areindex(self, index_name: Optional[str] = None) -> None:
913916
"""Re-index the vector store table."""
917+
index_name = index_name or self.table_name + DEFAULT_INDEX_NAME_SUFFIX
914918
query = f"REINDEX INDEX {index_name};"
915919
await self.engine._aexecute(query)
916920

917921
async def adrop_vector_index(
918922
self,
919-
index_name: str = DEFAULT_INDEX_NAME,
923+
index_name: Optional[str] = None,
920924
) -> None:
921925
"""Drop the vector index."""
926+
index_name = index_name or self.table_name + DEFAULT_INDEX_NAME_SUFFIX
922927
query = f"DROP INDEX IF EXISTS {index_name};"
923928
await self.engine._aexecute(query)
924929

925930
async def is_valid_index(
926931
self,
927-
index_name: str = DEFAULT_INDEX_NAME,
932+
index_name: Optional[str] = None,
928933
) -> bool:
929934
"""Check if index exists in the table."""
935+
index_name = index_name or self.table_name + DEFAULT_INDEX_NAME_SUFFIX
930936
query = f"""
931937
SELECT tablename, indexname
932938
FROM pg_indexes

tests/test_cloudsql_vectorstore_index.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@
2424

2525
from langchain_google_cloud_sql_pg import PostgresEngine, PostgresVectorStore
2626
from langchain_google_cloud_sql_pg.indexes import (
27-
DEFAULT_INDEX_NAME,
27+
DEFAULT_INDEX_NAME_SUFFIX,
2828
DistanceStrategy,
2929
HNSWIndex,
3030
IVFFlatIndex,
3131
)
3232

3333
DEFAULT_TABLE = "test_table" + str(uuid.uuid4()).replace("-", "_")
3434
CUSTOM_TABLE = "test_table_custom" + str(uuid.uuid4()).replace("-", "_")
35+
DEFAULT_INDEX_NAME = DEFAULT_TABLE + DEFAULT_INDEX_NAME_SUFFIX
3536
VECTOR_SIZE = 768
3637

3738
embeddings_service = DeterministicFakeEmbedding(size=VECTOR_SIZE)

0 commit comments

Comments
 (0)