Pinecone๊ณผ FastAPI ๊ธฐ๋ฐ 12ms ์ง์ฐ์๊ฐ์ Semantic Search ์ํคํ ์ฒ ๊ตฌํ
๐ง Mastering pinecone fastapi semantic search tutorial
AI ์์ฝ
Context
๋จ์ ํค์๋ ๋งค์นญ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ํ ์คํธ์ ์๋๋ฅผ ๋ฐ์ํ๋ ๊ณ ์ฐจ์ ๋ฒกํฐ ๊ณต๊ฐ ๊ธฐ๋ฐ์ ๊ฒ์ ์ฒด๊ณ ํ์. ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์ Nearest Neighbor ์ฟผ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ ์ฉ Vector Store์ ๋์ ์ด ํ์์ ์ธ ์ํฉ.
Technical Solution
all-MiniLM-L6-v2๋ชจ๋ธ์ ํตํ 384์ฐจ์ Embedding ์์ฑ์ผ๋ก ํ ์คํธ์ ์๋ฏธ๋ก ์ ์์นํ ๊ตฌํ- FastAPI๋ฅผ ์ํธ๋ฆฌํฌ์ธํธ๋ก ์ค๊ณํ์ฌ Pydantic ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ฐ OpenAPI ์คํค๋ง ์๋ํ
- Pinecone์ Managed Index๋ฅผ ํ์ฉํ์ฌ ๋ฒกํฐ ์ ์ฅ ๋ฐ Approximate Nearest Neighbor(ANN) ๊ฒ์ ๋ก์ง ๋ถ๋ฆฌ
- Cosine Similarity ๋ฉํธ๋ฆญ ์ ์ฉ์ผ๋ก ๋ฒกํฐ ์ ๊ทํ ๋ฐ ๋ด์ ๊ณ์ฐ์ ํตํ ์ ๋ฐํ ์ ์ฌ๋ ์ธก์
upsertAPI๋ฅผ ํตํด ๋ฌธ์ ID, ๋ฒกํฐ, ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅํ๋ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ- ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋์ ํํฐ์ ์กฐํ ํ ์์ ํ๋ณด๊ตฐ์ ์ฌ์ ๋ ฌํ๋ ์ฟผ๋ฆฌ ๊ฒฝ๋ก ์ค๊ณ๋ฅผ ํตํ ์๋ต ์๋ ์ต์ ํ
์ค์ฒ ํฌ์ธํธ
- Embedding ๋ชจ๋ธ์ ์ถ๋ ฅ ์ฐจ์๊ณผ Pinecone Index์ Dimension ์ผ์น ์ฌ๋ถ ๊ฒํ - API Key์ ํ๋์ฝ๋ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๊ฒฝ ๋ณ์ ๋๋ Secret Manager ๋์ - ์ธ๋ฑ์ค ์ฐจ์ ๋ณ๊ฒฝ ํ์ ์ ์ ๊ท ์ธ๋ฑ์ค ์์ฑ ๋ฐ ์ ์ฒด ๋ฐ์ดํฐ Re-upsert ์ ๋ต ์๋ฆฝ - ๋๊ท๋ชจ ์ํฌ๋ก๋์์ Self-hosted FAISS ๋๋น Managed Service์ ๋ ์ดํด์ ์์ธก ๊ฐ๋ฅ์ฑ ๋น๊ต