ในบล็อกโพสต์นี้ เราจะเจาะลึกแอปพลิเคชัน AI ที่สามารถสร้างได้โดยใช้ Upstash Redis, Upstash Vector และ Vercel AI SDK เราจะสำรวจคุณสมบัติและความสามารถเฉพาะตัวของเครื่องมือแต่ละชิ้น โดยเน้นวิธีการบูรณาการเพื่อสร้างโซลูชัน AI ที่ทรงพลังและมีประสิทธิภาพ ขณะที่เราตรวจสอบฟังก์ชันการทำงานของเครื่องมือเหล่านี้ เราจะดูตัวอย่างแอปพลิเคชันโดยสังเขปด้วย
อัพสเตชเวกเตอร์
ก่อนอื่นมาทำความเข้าใจกับฐานข้อมูลเวกเตอร์และเวกเตอร์ก่อน
ฐานข้อมูลเวกเตอร์เป็นระบบจัดเก็บข้อมูลเฉพาะที่ออกแบบมาเพื่อจัดเก็บและเรียกค้นข้อมูลในรูปแบบอาเรย์ตัวเลขหรือที่เรียกว่าเวกเตอร์ ฐานข้อมูลเหล่านี้จัดการเวกเตอร์มิติสูงปริมาณมากได้อย่างมีประสิทธิภาพ ทำให้เหมาะสำหรับการจัดการโครงสร้างข้อมูลที่ซับซ้อน ประโยชน์หลักของการใช้ฐานข้อมูลเวกเตอร์:
ประสิทธิภาพ :ฐานข้อมูลเหล่านี้นำเสนอพื้นที่จัดเก็บและการเรียกค้นเวกเตอร์ที่มีมิติสูงอย่างมีประสิทธิภาพ ช่วยลดภาระในการคำนวณ และเร่งการตอบกลับแบบสอบถามในแอปพลิเคชัน AI
ความแม่นยำ :อัลกอริธึมการค้นหาที่ปรับให้เหมาะสมช่วยให้มั่นใจได้ว่าฐานข้อมูลเวกเตอร์ค้นหาจุดข้อมูลที่เกี่ยวข้องมากที่สุดได้อย่างแม่นยำ ช่วยเพิ่มประสิทธิภาพของระบบที่ต้องมีการจัดหมวดหมู่ข้อมูล เช่น เครื่องมือแนะนำและระบบตรวจจับการฉ้อโกง
การประมวลผลแบบเรียลไทม์ :ด้วยความสามารถในการประมวลผลข้อมูลแบบเรียลไทม์ ฐานข้อมูลเวกเตอร์จึงเหมาะอย่างยิ่งสำหรับแอปพลิเคชันที่ต้องการการตอบสนองในทันที เช่น แชทบอทและการวิเคราะห์แบบเรียลไทม์
เวกเตอร์ใน AI มักจะแสดงถึงโมเดลออบเจ็กต์ที่อิงตามการฝัง ซึ่งจับคุณลักษณะหรือคุณลักษณะที่สำคัญในบริบทของแอปพลิเคชัน ตัวอย่างเช่น ในแอปพลิเคชัน AI ที่ใช้การประมวลผลภาษาธรรมชาติ เวกเตอร์อาจแสดงความหมายของข้อความ คำพูด หรือเอกสารที่กำหนด ในแอปพลิเคชันที่ใช้การประมวลผลภาพ เวกเตอร์แสดงถึงคุณลักษณะของรูปภาพที่กำหนด
ตอนนี้ มาเจาะลึกลงไปใน Upstash Vector กันดีกว่า
Upstash Vector เป็นฐานข้อมูลเวกเตอร์แบบไร้เซิร์ฟเวอร์ที่ใช้ DiskANN เป็นอัลกอริธึมการค้นหาความคล้ายคลึงของเวกเตอร์ พร้อมด้วยฟังก์ชันความคล้ายคลึง 3 ประเภท:โคไซน์ ระยะทางแบบยูคลิเดียน และดอทโปรดัค เนื่องจาก Upstash Vector ไม่มีเซิร์ฟเวอร์ จึงมีราคาแบบจ่ายตามการใช้งานและระดับฟรีที่รองรับผู้ที่ต้องการสำรวจ
ดูรายละเอียดเพิ่มเติมเกี่ยวกับอัลกอริทึมและฟังก์ชันความคล้ายคลึงที่ใช้ใน Upstash Vector ได้ในเอกสาร Upstash
นอกเหนือจากความสามารถในการค้นหาประสิทธิภาพสูงที่มีต้นทุนต่ำแล้ว ยังมี Rest API และ SDK ใน Typescript และ Python เพื่อให้บูรณาการกับ Upstash Vector เข้ากับโค้ดเบสของเราได้อย่างง่ายดาย
หากต้องการรวมเข้ากับ Upstash Vector เราจำเป็นต้องเข้าสู่ระบบคอนโซลก่อน เมื่อเราเข้าสู่ระบบแล้ว เราสามารถสร้างดัชนีเวกเตอร์ได้โดยคลิกที่ 00 ปุ่ม ในโมดอลป๊อปอัป เราสามารถตั้งชื่อดัชนีของเรา เลือกภูมิภาคที่มีดัชนีอยู่ได้ หลังจากนั้นเราสามารถเลือกโมเดลการฝังที่จะใช้เพื่อแยกการฝังออกจากวัตถุที่กำหนดก่อนที่จะเขียนลงในดัชนี Upstash Vector มีโมเดลการฝังโอเพ่นซอร์สที่กำหนดไว้ล่วงหน้าบางส่วนใน Upstash ที่สามารถใช้ได้ มิฉะนั้น เราสามารถเลือก 14 ได้ เพื่อให้เราสามารถกำหนดขนาดของเวกเตอร์ตามโมเดลการฝังภายนอกที่เราใช้
สุดท้ายนี้ เราสามารถเลือกฟังก์ชันความคล้ายคลึงที่คำนวณระยะห่างระหว่างเวกเตอร์ได้ มีฟังก์ชันความคล้ายคลึงกัน 3 ฟังก์ชันที่กำหนดไว้ใน Upstash:โคไซน์ ระยะทางแบบยุคลิด และผลคูณดอท คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันความคล้ายคลึงได้ในเอกสาร Upstash

ในหน้าจอถัดไปเราสามารถเลือกแผนที่เหมาะสมกับเราได้
เมื่อเราสร้างดัชนีเสร็จแล้ว เราก็สามารถรวม Upstash Vector เข้ากับโค้ดเบสของเราได้ ฉันจะใช้ Typescript ในโพสต์บล็อกนี้ อย่างไรก็ตาม สามารถใช้ Python หรือ Go SDK ได้เช่นกัน เราสามารถปฏิบัติตามคำแนะนำในการบูรณาการที่ให้ไว้ใน 27 แท็บบนคอนโซล Upstash Vector ก่อนอื่นเราต้องติดตั้ง 30 การพึ่งพาอาศัยกัน
npm i @upstash/vector
ตอนนี้เราสามารถเชื่อมต่อ เขียน และสืบค้นด้วยวิธีต่อไปนี้ได้อย่างง่ายดาย
import { Index } from "@upstash/vector"
const index = new Index({
url: <UPSTASH-VECTOR-ENDPOINT>,
token: <UPSTASH-VECTOR-TOKEN>,
})
await index.upsert({
id: "id1",
vector: […],
metadata: { metadata_field: "metadata_value" },
});
await index.query({
vector: […],
topK: 1,
includeVectors: true,
includeMetadata: true,
}); Vercel AI SDK
Vercel AI SDK เป็นชุดเครื่องมือ TypeScript ที่ออกแบบมาเพื่อปรับปรุงการบูรณาการความสามารถด้าน AI เข้ากับเว็บแอปพลิเคชัน รองรับเฟรมเวิร์กต่างๆ เช่น React, Next.js, Vue, Svelte และ Node.js ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่ขับเคลื่อนด้วย AI ได้อย่างมีประสิทธิภาพ Vercel AI SDK ประกอบด้วย 3 แนวคิดหลัก:
แกน AI SDK
Vercel AI SDK Core เป็นองค์ประกอบสำคัญของ Vercel AI SDK ซึ่งได้รับการออกแบบมาเพื่อปรับปรุงการบูรณาการความสามารถด้านปัญญาประดิษฐ์เข้ากับเว็บแอปพลิเคชัน โมดูลหลักนี้มี API แบบรวมที่อำนวยความสะดวกในการใช้โมเดลภาษาขนาดใหญ่ (LLM) เพื่อสร้างข้อความ ออบเจ็กต์ที่มีโครงสร้าง และการเรียกใช้เครื่องมือ
ตัวอย่างการใช้งานที่พบบ่อยที่สุดคือการใช้ 46 หรือ 59รหัส> เอพีไอ มาใช้งานพวกมันอย่างรวดเร็วใน typescript
ขั้นแรก นำเข้า Vercel AI SDK โดยเรียกใช้คำสั่งต่อไปนี้บนเทอร์มินัล
`npm i ai`
จากนั้นเราสามารถใช้ 67 API เป็นตัวอย่าง Vercel AI SDK นำเสนอการผสานรวมกับผู้ให้บริการโมเดลที่เป็นที่รู้จัก เช่น OpenAI, Antropic, Google, Mistral และอื่นๆ เราจะใช้ OpenAI ในตัวอย่างนี้ แต่อื่นๆ ก็ทำได้ง่ายพอๆ กับการบูรณาการ OpenAI
import { generateText } from "ai"
import { openai } from "@ai-sdk/openai"
const { text } = await generateText({
model: openai("gpt-4-turbo"),
prompt: "What is love?"
}) AI SDK UI
UI ของ Vercel AI SDK เป็นชุดเครื่องมือที่ไม่เชื่อเรื่องเฟรมเวิร์กที่ออกแบบมาเพื่อช่วยนักพัฒนาในการสร้างแอปพลิเคชันแชทแบบโต้ตอบ การเติมเต็ม และแอปพลิเคชันผู้ช่วยพร้อมฟังก์ชันเพิ่มเติมบางอย่าง เช่น การสร้างอินเทอร์เฟซการแชท ส่วนประกอบ AI ที่สร้าง และการจัดการสถานะ
ตัวอย่างการใช้งานที่พบบ่อยที่สุดคือ 77 และ 82รหัส> ตะขอ 90รหัส> จัดเตรียมการสตรีมข้อความแชทโดยสรุปการจัดการสถานะสำหรับประเภทอินพุตและเอาต์พุตที่ต้องการ เช่น ข้อความ สถานะการโหลด และข้อผิดพลาด 100รหัส> ช่วยให้นักพัฒนาสามารถจัดการการเติมข้อความให้สมบูรณ์ภายในแอปพลิเคชัน AI จัดการสถานะอินพุตแชท และอัปเดต UI โดยอัตโนมัติเมื่อมีข้อความเติมใหม่มาถึงจากผู้ให้บริการของคุณ
มาดูวิธีใช้ 118 กัน อย่างรวดเร็วเป็นตัวอย่างสำหรับ AI SDK UI
const { messages, input, handleInputChange, handleSubmit} =
useChat({
api: "api/chat",
initialMessages: […],
onResponse(response) {},
streamMode: "text",
}); อย่างที่คุณเห็น ต้องใช้ตำแหน่งข้อมูล API เพื่อเรียกเมื่อมีการส่งข้อความ เป็นฟังก์ชันเมื่อได้รับการตอบกลับ และจะจัดการสถานะเอง
AI SDK RSC
ส่วนนี้ของ Vercel AI SDK มีไว้สำหรับการเรนเดอร์ฝั่งเซิร์ฟเวอร์ วัตถุประสงค์ของ AI SDK RSC คือการให้การสนับสนุนโมเดลภาษาขนาดใหญ่ (LLM) เพื่อสร้างและสตรีม UI โดยตรงจากเซิร์ฟเวอร์ไปยังไคลเอนต์ผ่าน React Server Components (RSC)
AI SDK RSC มีฟังก์ชันมากมายเพื่อรองรับเอาต์พุตการสตรีมสำหรับ UI ที่เรนเดอร์ฝั่งเซิร์ฟเวอร์ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งเหล่านี้ โปรดไปที่เอกสาร Vercel AI SDK RSC ในบล็อกนี้ เราจะตรวจสอบฟังก์ชันเดียวเพื่อดูว่ามันทำงานอย่างไร เพื่อจุดประสงค์นี้ มาทำความเข้าใจวิธีใช้ 122 กันดีกว่า ฟังก์ชั่น
const result = await streamUI({
model: openai('gpt-4o'),
prompt: 'Get the weather for San Francisco',
text: ({ content }) => <div>{content}</div>,
tools: {},
});
อย่างที่เห็น 131 ยังทำงานเหมือนกับฟังก์ชัน AI SDK Core ข้อแตกต่างหลักคือการสตรีม UI ที่แสดงผลจากเซิร์ฟเวอร์
กล่าวโดยย่อคือ Vercel AI SDK ช่วยให้นักพัฒนาสร้างแอปพลิเคชัน AI ในทุกส่วนของการพัฒนาซอฟต์แวร์ตั้งแต่แบ็กเอนด์ไปจนถึงฟรอนต์เอนด์
อัพสแตช เรดดิส
ในแอปพลิเคชัน AI นั้น สามารถใช้ Upstash Redis เป็นหลักในการจำกัดอัตราเพื่อปกป้อง API และการใช้งานโมเดล LLM วัตถุประสงค์ในการแคช หรือจัดเก็บประวัติข้อความในแอปพลิเคชันแชทบอท AI
อันดับแรกเราควรสร้างฐานข้อมูล Redis บนคอนโซล Upstash
<แข็งแกร่ง>
ป>
เมื่อเราสร้างฐานข้อมูล Redis แล้ว เราก็สามารถรวม Redis เข้ากับฐานโค้ดของเราเพื่อเขียนและสืบค้นข้อมูล ซึ่งอาจเป็นข้อมูลแคช ประวัติข้อความ สถานะการสนทนา ฯลฯ ในการทำเช่นนั้น เราควรติดตั้ง Upstash Redis SDK ก่อน
npm i @upstash/redis
จากนั้น เราสามารถเชื่อมต่อฐานข้อมูล Redis ของเราจากโค้ดได้
import { Redis } from '@upstash/redis'
const redis = new Redis({
url: <UPSTASH-REDIS-ENDPOINT>,
token: <UPSTASH-REDIS-TOKEN>,
})
const data = await redis.set('foo', 'bar'); หากเราต้องการใช้ Redis สำหรับการจำกัดอัตรา เราสามารถใช้ SDK การจำกัดอัตราที่ Upstash มอบให้ได้เช่นกัน การขึ้นต่อกันที่จะติดตั้งจะแตกต่างกันสำหรับ SDK ที่จำกัดอัตรา
npm install @upstash/ratelimit
ตอนนี้ เพื่อดำเนินการจำกัดอัตรา;
import { Ratelimit } from "@upstash/ratelimit";
import { Redis } from "@upstash/redis";
// Create a new ratelimiter, that allows 10 requests per 10 seconds
const ratelimit = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(10, "10 s"),
analytics: true,
/**
* Optional prefix for the keys used in redis. This is useful if you want to share a redis
* instance with other applications and want to avoid key collisions.5
*/
prefix: "prefix",
});
// Use a constant string to limit all requests with a single ratelimit
// Or use a userID, apiKey or ip address for individual limits.
const identifier = "identifier";
const { success } = await ratelimit.limit(identifier);
if (!success) {
return "Unable to process at this time";
}
// rest of the code การใช้ Upstash Redis และ Vector กับ Vercel AI SDK
ตอนนี้ สามารถทำอะไรได้บ้างด้วยเครื่องมือที่อธิบายไว้ข้างต้น? มากมาย...
แชทบอท RAG เป็นแอปพลิเคชัน AI ทั่วไปที่สามารถสร้างได้ด้วยฐานข้อมูล Vercel AI SDK และ Upstash Vector การดึงข้อมูล-Augmented Generation (RAG) เป็นเฟรมเวิร์กขั้นสูงที่ช่วยเพิ่มขีดความสามารถของแชทบอทและระบบ AI การสนทนาอื่นๆ อย่างมีนัยสำคัญ โดยผสานองค์ประกอบที่สำคัญสองประการเข้าด้วยกัน ได้แก่ การดึงข้อมูลและการสร้าง เพื่อให้ได้คำตอบที่แม่นยำ เกี่ยวข้องตามบริบท และให้ข้อมูลมากขึ้น แชทบอท RAG ใช้ฐานข้อมูลเวกเตอร์เป็นตัวดึงข้อมูล ซึ่งจะจัดเก็บและให้ประวัติการแชทในรูปแบบฝังที่สามารถใช้ในการสร้างการตอบสนองถัดไปจากโมเดล LLM ด้วยวิธีนี้ โมเดล LLM จะสามารถสร้างคำตอบที่เกี่ยวข้องกับบริบทของการสนทนาและเรียนรู้จากการพูดคุยที่ผ่านมาได้
สำหรับแอปพลิเคชันแชทบอทประเภทนี้ Upstash Vector เป็นฐานข้อมูลเวกเตอร์ที่สมบูรณ์แบบซึ่งสามารถเป็นรีทรีฟเวอร์ได้ นอกเหนือจากการบูรณาการกับ Upstash Vector แล้ว เราสามารถใช้ 146 ได้ หรือ 150รหัส> API ของส่วนประกอบ Vercel AI SDK Core ในด้านแบ็กเอนด์เพื่อสร้างและสตรีมการตอบสนองที่มาจากโมเดล LLM เช่น OpenAI, Anthropic, Mistral ฯลฯ ที่ส่วนหน้า เราสามารถใช้ประโยชน์จาก 165 hook ขององค์ประกอบ Vercel AI SDK UI ซึ่งเป็นเฟรมเวิร์กอันทรงพลังที่จัดการ UI การแชทและการจัดการสถานะ คุณสามารถดูตัวอย่างแอปพลิเคชัน RAG ได้ในบล็อกโพสต์ของ DegreeGuru
ตัวอย่างแอปพลิเคชัน AI ทั่วไปอีกประเภทหนึ่งที่สามารถสร้างได้อย่างง่ายดายด้วย Vercel AI SDK คือระบบการแนะนำ ระบบการแนะนำเป็นหนึ่งในคุณสมบัติที่สำคัญที่สุดของแพลตฟอร์มอีคอมเมิร์ซ ใช้การตั้งค่าส่วนตัวและประวัติของผู้ใช้เพื่อระบุความสนใจของผู้ใช้เพื่อให้คำแนะนำที่เป็นประโยชน์ ในขณะที่สร้างระบบการแนะนำ Vercel AI SDK Core สามารถช่วยให้เราแยกการฝังข้อมูลผู้ใช้ได้อย่างง่ายดายโดยใช้ 176 ฟังก์ชั่น มาดูโค้ดตัวอย่างด้านล่าง
import { embed } from 'ai';
import { openai } from '@ai-sdk/openai';
// 'embedding' is a single embedding object (number[])
const { embedding } = await embed({
model: openai.embedding('text-embedding-3-small'),
value: 'sunny day at the beach',
}); หลังจากแยกการฝังซึ่งจริงๆ แล้วเป็นข้อมูลเชิงความหมายในรูปแบบอาร์เรย์ตัวเลข เราสามารถจัดเก็บเอาต์พุตไว้ใน Upstash Vector การฝังเหล่านั้นสามารถสอบถามและจำแนกตามพฤติกรรมของผู้ใช้และนำไปใช้ในคำแนะนำในอนาคตได้
185รหัส> ฟังก์ชันที่แยกการฝังจากอินพุตใน Vercel AI SDK Core สามารถนำไปใช้ในแอปพลิเคชันการเรียนรู้ของเครื่องทุกประเภท เช่น การค้นหาความหมาย การค้นหารูปภาพ การสรุปเนื้อหา และอื่นๆ นักพัฒนาสามารถแทรกการฝังเวกเตอร์ที่แยกโดยฟังก์ชันนี้ลงในฐานข้อมูล Upstash Vector เพื่อให้ผลิตภัณฑ์สามารถวิเคราะห์อินพุตตามการฝังโดยไม่จำเป็นต้องจัดเก็บข้อมูลดิบ ซึ่งไม่มีประโยชน์สำหรับอัลกอริทึม AI แอปพลิเคชันตัวอย่างสุดท้ายคือสรุป AI ของรีวิวลูกค้า ในแอปพลิเคชันตัวอย่างนี้ เราสามารถแยกการฝังออกจากข้อความที่กำหนด ซึ่งเป็นบทวิจารณ์ของลูกค้าเกี่ยวกับผลิตภัณฑ์และจัดเก็บไว้ในฐานข้อมูลเวกเตอร์ ต่อมา นักวิเคราะห์สามารถใช้เวกเตอร์เพื่อรับข้อมูลสรุปโดยแจ้งไปยังโมเดล LLM ด้วย Vercel AI SDK Core อีกครั้ง
ตัวอย่างสุดท้ายที่เราสามารถพูดคุยในบล็อกโพสต์นี้คือระบบการตรวจจับการฉ้อโกง/ความผิดปกติ ในรูปแบบพื้นฐานของการตรวจจับความผิดปกติ นักพัฒนาจำเป็นต้องจัดประเภทธุรกรรมหรือพฤติกรรมผู้ใช้ เพื่อให้สามารถตรวจจับได้ว่ามีความเคลื่อนไหวที่ผิดปกติหรือไม่ เพื่อจุดประสงค์ดังกล่าว สามารถใช้ฐานข้อมูลเวกเตอร์ Upstash เพื่อสร้างเวกเตอร์เพื่อค้นหาในพื้นที่ n มิติ เมื่อการโต้ตอบของผู้ใช้อยู่ในอวกาศผ่านการจัดเก็บเวกเตอร์ใน Upstash Vector เครื่องมือวิเคราะห์จะได้รับความคล้ายคลึงกันของการโต้ตอบขาเข้ากับการโต้ตอบในปริภูมิเวกเตอร์ คะแนนความคล้ายคลึงกันเหล่านี้สามารถช่วยระบุได้ว่าการโต้ตอบเป็นเรื่องปกติหรือไม่
ในแอปพลิเคชันตัวอย่างทั้งหมดที่เรากล่าวถึงข้างต้น เราสามารถใช้คุณสมบัติการจำกัดอัตรา Upstash สำหรับการดำเนินการหนักทุกประเภท เช่น การสร้างข้อความ การเรียกโมเดล AI เพื่อแยกการฝัง เป็นต้น ด้วยการจำกัดอัตรา เราจึงสามารถปกป้องการดำเนินงานของเราจากการรับส่งข้อมูลที่ล้นหลาม นอกจากนั้น Upstash Redis ยังเป็นสถานที่ที่ดีเยี่ยมในการจัดเก็บข้อมูลผู้ใช้ดิบสำหรับแอปพลิเคชันของเรา เช่น ประวัติข้อความ แคชของข้อความแจ้งที่เราใช้สำหรับโมเดล LLM และอื่นๆ
บทสรุป
ในบล็อกโพสต์นี้ เราพบว่า Upstash Redis, Upstash Vector และ Vercel AI SDK เป็นการผสมผสานที่มีคุณค่าสำหรับการสร้างแอปพลิเคชัน AI ขั้นสูง เครื่องมือเหล่านี้ทำงานร่วมกันเพื่อจัดการข้อมูล ประมวลผลข้อมูล และปรับใช้โมเดล AI อย่างมีประสิทธิภาพ ตัวอย่างที่ให้ไว้แสดงให้เห็นถึงความอเนกประสงค์ของกลุ่มเทคโนโลยีนี้ในการสร้างโซลูชัน AI ที่หลากหลาย
สำหรับตัวอย่างเพิ่มเติม คุณสามารถตรวจสอบบล็อก Upstash และเทมเพลต Vercel ได้