💡

npx amplify sandboxのノリで作るpinecone sandbox

2024/03/11に公開

RAG基盤でよく使われるベクトル検索データベースの一つである、PineConeというサービスがあります。

https://www.pinecone.io/

私は、amplify gen2に対してcontributeに励んでるわけでございますが、
amplify gen2の中には、npx amplify sandboxとすると、開発者個人の開発環境をばっと作ってくれる機能が存在します。

https://zenn.dev/purpom/articles/12538dec010be8

開発を始める時に、npx amplify sandboxとしてawsリソースを一時的に立ち上げて、開発が終了したら、ctl+Cで立ち上げたawsリソースを一括downさせられる機能で、誰かの開発環境に影響を与えられるものではないものなので、「個人レベルでインフラ環境を即立ち上げて、cloudに繋ぎながらlocalで開発できる」というのは、とても良い開発サイクルだと思っています。

PineConeでもnpx amplify sandbox的な、pinecone sandboxがしたい。

これを実現するような、starter-repositoryを作りました。

https://github.com/magisystem0408/pinecone-local-sandbox-starter

使い方

https://github.com/magisystem0408/pinecone-local-sandbox-starter/blob/934fae660185152575f00f6ce6342d726e44f87c/config/main.py#L1

make pinecone-sandboxとすると、ローカル開発環境用のPineconeのIndexが立ち上がる。

make pinecone-sandbox

立ち上がった時のPineconeの接続情報は、amplifyconfiguration.jsonみたいに、
configuration.yamlが生成されます。

podのspecは、下記で設定可能

https://github.com/magisystem0408/pinecone-local-sandbox-starter/blob/934fae660185152575f00f6ce6342d726e44f87c/scripts/dev_manager_start_local_env.py#L33-L42

開発終了時にmake pinecone-sandbox-endとすると、ローカル開発環境のPineconeのIndexが破棄される。

make pinecone-sandbox-end

localに生成されるconfiguration.yamlのfile名は、書き換えも可能

https://github.com/magisystem0408/pinecone-local-sandbox-starter/blob/934fae660185152575f00f6ce6342d726e44f87c/config/main.py#L2

Discussion