Langchain Retriever를 리서치하다가 개별의 레코드를 삭제하거나 업데이트 하는 방법에 대해서 찾아봤는데, 작년까지만 해도, record id와 metadata filter를 통해서 삭제가 가능하였다.
지금도 아래 코드 처럼 id로 삭제를 하는 기능은 제공하지만, langchain 에서 retrieve한 record의 id는 리턴되지 않기 때문에 실질적으로 사용이 불가능하다.
vectordb.delete(ids=['27c0afe6-6f08-4b4b-95a7-f2b2c851b59f'] )
이런저런 이유 때문에 없애버리고 Indexing이라는 기능을 추가하였는데,
https://python.langchain.com/docs/modules/data_connection/indexing
기본적인 개념은 저장된 벡터에 대한 정보를 앞단에 SqlLite나 Postgres/Redis등의 데이터베이스에 저장해놓고, 인덱스를 관리하고자 하는 전략인데, 무지 불편하다.
하루 리서치 결과로 내린 결론은 아마도 이 Indexing 기능은 추후 보강될거 같으니, 그때까지는 pinecone API를 직접사용하여 delete나 record에 대한 업데이트 기능을 하는 것이 좋을듯 하다.
'빅데이타 & 머신러닝 > 생성형 AI (ChatGPT etc)' 카테고리의 다른 글
Langchain을 이용한 LLM 애플리케이션 개발 #13 - Chain을 이용한 워크 플로우 구현 #1 (0) | 2024.01.24 |
---|---|
Langchain을 이용한 LLM 애플리케이션 개발 #12 - 큰문서를 나눠서 검색하기 (Parent-Child Chunking) (0) | 2024.01.22 |
Langchain을 이용한 LLM 애플리케이션 개발 #11 - 벡터DB 검색 내용을 요약하기 (0) | 2024.01.12 |
Langchain을 이용한 LLM 애플리케이션 개발 #10- 벡터 DB 검색하기 (0) | 2024.01.11 |
Langchain을 이용한 LLM 애플리케이션 개발 #9 - RAG를 이용한 문서 참조. 문서 저장하기 (2) | 2024.01.09 |