LangChain์„ ์‚ฌ์šฉํ•˜์—ฌ LLM ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” LangChain์„ ์‚ฌ์šฉํ•˜์—ฌ LLM ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์˜ ๊ฐœ์š”๋Š” GitHub์˜ ์ ˆ์ฐจ ๊ฐ€์ด๋“œ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

LangChain์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

LangChain์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒ์„ฑํ˜• AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ(RAG) ์›Œํฌํ”Œ๋กœ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” LLM ์กฐ์ • ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์„œ, ๋ณต์žกํ•œ LLM ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๊ตฌ์กฐ, ๋„๊ตฌ, ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

LangChain์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Google LangChain ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. LangChain ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ LangChain ์ œํ’ˆ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

PostgreSQL์šฉ Cloud SQL์˜ LangChain ๊ตฌ์„ฑ์š”์†Œ

PostgreSQL์šฉ Cloud SQL์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ LangChain ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์šฉ Cloud SQL์˜ LangChain ๋น ๋ฅธ ์‹œ์ž‘์—์„œ LangChain ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

PostgreSQL์šฉ Cloud SQL์˜ ๋ฒกํ„ฐ ์ €์žฅ์†Œ

๋ฒกํ„ฐ ์ €์žฅ์†Œ๋Š” ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฌธ์„œ์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฒกํ„ฐ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž ์ฟผ๋ฆฌ์˜ ์˜๋ฏธ๋ฅผ ํ•ด์„ํ•˜๋Š” ์‹œ๋งจํ‹ฑ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ฒ€์ƒ‰์„ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋…์ ์œผ๋กœ ์ฟผ๋ฆฌ์™€ ์ผ์น˜ํ•˜๋Š” ์ฃผ์ œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์‹œ ๋ฒกํ„ฐ ์ €์žฅ์†Œ๋Š” ๊ฒ€์ƒ‰ ์š”์ฒญ์˜ ์ž„๋ฒ ๋”ฉ๊ณผ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. LangChain์—์„œ ๋ฒกํ„ฐ ์ €์žฅ์†Œ๋Š” ์ž„๋ฒ ๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์šฉ Cloud SQL์—์„œ ๋ฒกํ„ฐ ์ €์žฅ์†Œ๋กœ ์ž‘์—…ํ•˜๋ ค๋ฉด PostgresVectorStore ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ LangChain ๋ฒกํ„ฐ ์ €์žฅ์†Œ ์ œํ’ˆ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฒกํ„ฐ ์ €์žฅ์†Œ ์ ˆ์ฐจ ๊ฐ€์ด๋“œ

๋ฒกํ„ฐ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ PostgreSQL์šฉ Cloud SQL ๊ฐ€์ด๋“œ์—์„œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • ํ†ตํ•ฉ ํŒจํ‚ค์ง€ ๋ฐ LangChain ์„ค์น˜
  • PostgresEngine ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  PostgreSQL์šฉ Cloud SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ํ’€ ๊ตฌ์„ฑ
  • ํ…Œ์ด๋ธ” ์ดˆ๊ธฐํ™”
  • VertexAIEmbeddings๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž„๋ฒ ๋”ฉ ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ
  • ๊ธฐ๋ณธ PostgresVectorStore ์ดˆ๊ธฐํ™”
  • ํ…์ŠคํŠธ ์ถ”๊ฐ€
  • ํ…์ŠคํŠธ ์‚ญ์ œ
  • ๋ฌธ์„œ ๊ฒ€์ƒ‰
  • ๋ฒกํ„ฐ๋กœ ๋ฌธ์„œ ๊ฒ€์ƒ‰
  • ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์–ด๋ฅผ ๊ฐ€์†ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์ƒ‰์ธ ์ถ”๊ฐ€
  • ์ƒ‰์ธ ์žฌ์ƒ์„ฑ
  • ์ƒ‰์ธ ์‚ญ์ œ
  • ์ปค์Šคํ…€ ๋ฒกํ„ฐ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ ๊ฒ€์ƒ‰

PostgreSQL์šฉ Cloud SQL์˜ ๋ฌธ์„œ ๋กœ๋”

๋ฌธ์„œ ๋กœ๋”๋Š” LangChain Document ๊ฐ์ฒด๋ฅผ ์ €์žฅ, ๋กœ๋“œ, ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž„๋ฒ ๋”ฉ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๋ฒกํ„ฐ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฒด์ธ์— ํŠน์ • ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL์šฉ Cloud SQL์˜ ๋ฌธ์„œ ๋กœ๋”์—์„œ ๋ฌธ์„œ๋ฅผ ๋กœ๋“œํ•˜๋ ค๋ฉด PostgresLoader ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. PostgresLoader๋Š” ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ์˜ ์ฒซ ๋ฒˆ์งธ ์—ด๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ๋ฌธ์„œ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์—์„œ ์ฒซ ๋ฒˆ์งธ ์—ด์€ ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ๋‘ ๋ฒˆ์งธ ์—ด์€ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ ํ–‰์ด ๋ฌธ์„œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ์ €์žฅ ๋ฐ ์‚ญ์ œํ•˜๋ ค๋ฉด PostgresDocumentSaver ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ LangChain ๋ฌธ์„œ ๋กœ๋” ์ฃผ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฌธ์„œ ๋กœ๋” ์ ˆ์ฐจ ๊ฐ€์ด๋“œ

๋ฌธ์„œ ๋กœ๋”์— ๋Œ€ํ•œ PostgreSQL์šฉ Cloud SQL ๊ฐ€์ด๋“œ์—์„œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • ํ†ตํ•ฉ ํŒจํ‚ค์ง€ ๋ฐ LangChain ์„ค์น˜
  • ํ…Œ์ด๋ธ”์—์„œ ๋ฌธ์„œ ๋กœ๋“œ
  • ๋กœ๋”์— ํ•„ํ„ฐ ์ถ”๊ฐ€
  • ์—ฐ๊ฒฐ ๋ฐ ์ธ์ฆ ๋งž์ถค์„ค์ •
  • ๊ณ ๊ฐ ์ฝ˜ํ…์ธ  ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ฌธ์„œ ์ƒ์„ฑ ๋งž์ถค์„ค์ •
  • PostgresDocumentSaver๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋งž์ถค์„ค์ •ํ•˜์—ฌ ๋ฌธ์„œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•

PostgreSQL์šฉ Cloud SQL์˜ ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€ ๊ธฐ๋ก

์งˆ์˜์‘๋‹ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์ถ”๊ฐ€ ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๋ ค๋ฉด ๋Œ€ํ™”์—์„œ ๋งํ•œ ๋‚ด์šฉ์˜ ๊ธฐ๋ก์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. LangChain ChatMessageHistory ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๊ฐ€์ ธ์™€ ์ถ”๊ฐ€ ๋Œ€๋‹ต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋Š” ์งˆ๋ฌธ, ๋Œ€๋‹ต, ์„œ์ˆ , ์ธ์‚ฌ๋ง ๋˜๋Š” ๋Œ€ํ™” ์ค‘์— ์‚ฌ์šฉ์ž ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐํƒ€ ํ…์ŠคํŠธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ChatMessageHistory๊ฐ€ ๊ฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฐ ๋Œ€ํ™”์˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์šฉ Cloud SQL์€ PostgresChatMessageHistory๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

์ฑ„ํŒ… ๋ฉ”์‹œ์ง€ ๊ธฐ๋ก ์ ˆ์ฐจ ๊ฐ€์ด๋“œ

์ฑ„ํŒ… ๋ฉ”์‹œ์ง€ ๊ธฐ๋ก์— ๋Œ€ํ•œ PostgreSQL์šฉ Cloud SQL ๊ฐ€์ด๋“œ์—์„œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • LangChain ์„ค์น˜ ๋ฐ Google Cloud์— ์ธ์ฆ
  • PostgresEngine ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  PostgreSQL์šฉ Cloud SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ํ’€ ๊ตฌ์„ฑ
  • ํ…Œ์ด๋ธ” ์ดˆ๊ธฐํ™”
  • PostgresChatMessageHistory ํด๋ž˜์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ
  • LangChain Expression Language(LCEL)๋ฐ Google์˜ Vertex AI ์ฑ„ํŒ… ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ๊ธฐ๋ก ์ฒด์ธ ๋งŒ๋“ค๊ธฐ

๋‹ค์Œ ๋‹จ๊ณ„