728x90
원래 langchain 패키지에 PGVector 클래스를 사용했었는데
뭔가 오류가 남
SQLModel 선언해서 직접 넣어보자
define Model
class LangchainEmbedding(SQLModel, table=True):
__tablename__ = 'langchain_pg_embedding'
class Config:
arbitrary_types_allowed = True
id: str = Field(primary_key=True)
collection_id: uuid.UUID = None
embedding: Any = Field(sa_column=Column(Vector(1024)))
document: str = None
cmetadata: Any = Field(default_factory=dict, sa_column=Column(JSONB))
관련 오류 메세지
vector나 json은 sqlmodel에서 바로 호환되지 않음
- raise exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: Unknown PG numeric type: 16385 - packages/sqlalchemy/sql/compiler.py", line 956, in process
type_._variant_mapping
AttributeError: 'float' object has no attribute '_variant_mapping' - raise ValueError(f"{type_} has no matching SQLAlchemy type")
ValueError: <class 'sqlalchemy.sql.sqltypes.JSON'> has no matching SQLAlchemy type
뭐 징하게도 뜬다
해결법
str 이나 UUID 처럼 바로 호환되지 않을 경우from sqlalchemy import Column
Any로 둔 다음 sqlalchemy로 Field를 정의해줌
embedding: Any = Field(sa_column=Column(Vector(1024)))
이런식
이러고 세션 사용해주면 된다
참고로 collection_id는 foreign_key니까 값을 직접 넣어줘야한다
728x90
'개발 > 파이썬' 카테고리의 다른 글
[SQLModel] Composite Key 설정 (0) | 2024.11.20 |
---|---|
Langchain mulltiple edges error, Graph Parallel Processing (0) | 2024.11.12 |
[pandas] (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape (0) | 2023.04.26 |
[keras] ValueError: No gradients provided for any variable: (0) | 2023.04.10 |
[pandas] 주피터 노트북에서 모든 행/열 보여주기 (0) | 2023.02.13 |