การอยู่ในโลกที่ส่วนใหญ่คนยากที่จะออกจากบ้านโดยไม่มี Smartphone ทำให้ Google ไม่มีวันไกลเกินจากเรา ในทันที เราสามารถหาคำตอบเกือบทุกคำถามผ่าน Search Query บน Search Engine ของ Google
Search Engines (และการเข้าถึงข้อมูลอันไม่มีที่สิ้นสุด) ได้รวมตัวเข้ากับชีวิตประจำวัน ทำให้หลายคนพึ่งพามากมาย และเพื่อให้ Search Engine หนึ่งทำงานได้ดี คำตอบสำหรับ Queries ต้องถูกดึงมาได้ทันที เนื่องจากมาตรฐานสูงที่ Google และ Tech Giants อื่นๆ ตั้งไว้
Lags, Delays หรือ Drags ใดๆ จะทำให้ User Experience แย่ลง ซึ่งเป็นเหตุผลที่ Launchpad App นี้ Alexis ใช้ Redis เป็น Main Database เพื่อเอาชนะอุปสรรคนี้
Founder ของแอปพลิเคชันนี้ Bobby Donchev ได้ใช้พลังของ RedisAI และ RediSearch เพื่อดึงข้อมูลจาก Corpus ตอบสนอง Query ด้วยประสิทธิภาพสูงสุด ผู้ใช้สามารถ Index PDFs และใช้ UI เรียบง่ายเพื่อดึงข้อมูลจากเอกสารของพวกเขา
โดยไม่มี Redis กระบวนการ Search ทั้งหมดจะช้า ล้มเหลว ฟังก์ชันของ Alexis มาดูว่า Bobby สร้างแอปพลิเคชันนี้อย่างไร
ก่อนจะต่อ เรายังอยากเน้นว่ายังมี Range ของ Applications ที่น่าทึ่งบน Redis Launchpad ให้เช็กเอาต์ด้วย!
- What will you build?
- What will you need?
- Architecture
- Getting started
- How the data is stored
- How the data is accessed
- How it works
1. What will you build?
คุณจะสร้าง Text Ranker ที่มีประสิทธิภาพ สามารถ Retrieve Search Queries ด้วยความเร็วสูงสุด ผู้ใช้จะสามารถใช้แอปพลิเคชันนี้ Index PDFs สำคัญและ Extract คำตอบจากเอกสารของพวกเขาได้อย่างง่ายดาย
เราจะผ่านแต่ละขั้นตอนตามลำดับเวลา และเน้น Components ที่จำเป็นในการสร้างแอปพลิเคชัน
2. What will you need?
- RediSearch: Indexes, Querying และ Full-text Search Engine
- RedisAI: Executes Deep Learning/Machine Learning Models เพื่อจัดการ Data และลด Latency
- Redis Streams: Manages Data Consumption
- NodeJS: ใช้เป็น Open-source, Cross-platform ที่ Execute JavaScript Code นอก Web Browser
- RedisJSON: Implements ECMA-404 The JSON Data Interchange Standard เป็น Native Data Type
3. Architecture
การให้คำตอบกับ Query ของผู้ค้นหาเกิดขึ้นใน 2 ขั้นตอน:
- ก่อนอื่น คุณเลือก Text ที่น่าจะมีคำตอบ คุณจะต้องใช้ RediSearch พร้อม BM25 Ranking Function สำหรับขั้นตอนนี้
- คุณสามารถใช้ Transformer AI Model ที่โหลดใน RedisAI เพื่อระบุ Answer Spans ใน Text
ด้วยการใช้ RediSearch ในขั้นตอนแรก คุณจะลด Search Space อย่างมาก ทำให้ App's Overall Experience เร็วขึ้น หลังจากนี้ คุณจะต้องใช้ NodeJS พร้อม TypeScript ใน Backend และ React พร้อม TypeScript ใน Frontend
นอกจาก RedisAI และ RediSearch แล้ว คุณยังใช้ RedisJSON สำหรับ User Model และ Asynchronous Worker ที่ implemented ด้วย Redis Streams
Webserver ถูก Expose ด้วย Express Framework ที่มี Endpoints ดังนี้:
เมื่อคุณ Register และ Login เข้า App คุณจะเริ่มเพิ่ม Documents เข้า Indexed Library ได้ เมื่อ PDF ถูก Upload Event จะถูกเขียนลง Redis Streams หลังจากนั้น คนจาก Consumer Group จะ Pick up Event สำหรับ Async Processing
คุณสามารถ Process PDF, Apply Cleaning และจัดเก็บ PDF ใน Redis Hash ที่ Indexed ด้วย RediSearch ตอนนี้คุณจะส่ง Natural Queries ไปที่ Server และไม่ถูกจำกัดแค่ Basic Keyword Searches อย่าง 'kubernetes deployments,' 'DDD root aggregate' ฯลฯ
แทนที่จะเป็นอย่างนั้น คุณจะ Query Searches ที่ Relevant มากขึ้น
Flowchart
ด้านล่างคือภาพรวมทั่วไปของการทำงานของ Alexis
Answer Query
- User ป้อน Query บน UI ซึ่งจะถูกส่งไป RediSearch
- RediSearch และ BM25 Function ถูก Activate ด้วย Keywords เพื่อหา Content ที่มีความหมายมากที่สุด
- Content นี้จะถูกส่งไป RedisAI พร้อม Query เพื่อเปรียบเทียบและตัดสินว่าคำตอบไหน Relevant กับ Query ของ User มากที่สุด
Upload PDFs & Index PDF Content
- User พิมพ์คำถามเข้า Search Engine
- RediSearch Index PDF(s) และค้นหาคำตอบสำหรับ Query นี้
- RedisAI รัน Inference และดึง Possible Answers หลายตัว
- RedisAI เปรียบเทียบแต่ละคำตอบ และตัดสินว่าอันไหน Relevant กับ Query มากที่สุด
- คำตอบสุดท้ายแสดงให้ User
4. Getting started
Step 1: Install the prerequisites
Node - v12.x.x
NPM - v6.x.x
Docker and Docker-compose
Step 2. Clone the repository
Step 3: Install the dependencies
เปลี่ยน Directory ไปที่ alexis และรันคำสั่งด้านล่าง:
npm install
Step 4. Setting up frontend and backend
คำสั่งด้านล่างจะ Bootstrap Server และ Client App และยัง Initialize Redis Server และ RedisInsight GUI:
npm run bootstrap
Step 5. Start the application
npm start
Step 6. Accessing the application
เปิด https://localhost:3000 เพื่อเข้าถึงแอปพลิเคชัน
Step 7. Accessing RedisInsight
RedisInsight เป็น Visual Tool ที่ให้คุณทำ GUI- และ CLI-based Interactions กับ Redis Database ของคุณ และอีกมากมายเมื่อ Develop Redis based Application มันเป็น Fully-featured Pure Desktop GUI Client ที่ให้ Capabilities ในการ Design, Develop และ Optimize Redis Application คลิกที่นี่เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ RedisInsight
RedisInsight GUI เข้าถึงได้ผ่านลิงก์: https://localhost:8001
5. How the data is stored
Step 1: User Data จัดเก็บใน RedisJSON
Step 2: RediSearch Index สร้างสำหรับแต่ละ User ด้วยโค้ดด้านล่าง
Step 3: เมื่อ User Upload PDF เราอัปเดต PDFs Array ของเขาด้วย RedisJSON
Step 4: File Upload ยัง Trigger Event ที่เขียนไปที่ ax:stream:pdf-processing Stream Payload ของ Stream คือ:
Step 5: Consumer ภายใน Consumer Group Pick Event จาก Stream และ Process File พร้อมเขียน Content ใน Hash
6. How the data is accessed
ในแอปพลิเคชันนี้ มี RediSearch Index สำหรับแต่ละ User ที่ Index Hash ข้างต้น นี่ให้ Lookup Capabilities เพื่อ Match Relevant Content กับ User's Query Content ถูก Analyze ด้วยโค้ดด้านล่าง:
Content ที่ Retrieve ด้วย RediSearch จะถูกส่งไป RedisAI เพื่อ Analyze
7. How it works
Create an account
เมื่อคุณเปิด Alexis App คุณจะถูก Redirect ไป Portal สำหรับ Login (ดูภาพด้านล่าง) หากยังไม่มี Account คุณจะมีโอกาสสร้างใหม่จาก Hyperlink ล่าง
เมื่อ Login แล้ว คุณจะถูกนำไปหน้าอื่นบน Portal หากเป็นครั้งแรก คุณจะไม่มี Documents ใน Library ขั้นตอนต่อไปคือ Import เข้า Application
Import documents into your library
เพื่อเริ่มกระบวนการนี้ คุณสามารถ Drag and Drop Documents เข้า Box กลางหน้าจอ หรือ Pull ขึ้นมาด้วยการคลิก Cloud Icon
เมื่อ Upload Document แล้ว คุณจะได้ Confirmation ผ่านการแสดง Title ด้านซ้ายมือ (ดูด้านล่าง)
เมื่อเกิดขึ้นนี้ PDF จะถูก Upload ไป Server และ Clean ใน Background กระบวนการนี้มีประสิทธิภาพเนื่องจาก Advanced Capabilities ของ Redis
Make your query
เห็นจากภาพข้างต้น คุณแค่พิมพ์ Query ที่ต้องการให้ Application Retrieve ในตัวอย่าง User ถามโดยตรงว่าเนื้อหา File เกี่ยวกับอะไร โดยพิมพ์ 'What is the journey about?'
เมื่อ Submit Query แล้ว คุณจะได้ Answers หลายอันทันที แต่ละอัน Ranked แบบ Hierarchical ตาม Relevancy (ดูตัวอย่างด้านล่าง)
Conclusion: ทำให้ Search ง่ายด้วย Redis
เมื่อ歸納ได้ สิ่งที่ทุกคนคาดหวังคือ Search Queries ต้อง Instant โดยไม่มี Delays เลย นี่คือ Digital Age และ Lags ใดๆ จะแค่ผลักดัน Users ไปหา東西ที่ Optimal กว่า
ด้วยการใช้ Redis Alexis ถูกขับเคลื่อนให้ทำงานที่ Premium Standard การรวบรวม Content ที่มีความหมายมากที่สุดข้าม Locations ต่างๆ เร็วและมีประสิทธิภาพขอบคุณ RediSearch และความสามารถ Hyper-advanced ของ RedisAI สามารถ篩 Content นี้และให้ Users ได้ Most Relevant และ Accurate Answers สำหรับ Query ของพวกเขา
หากคุณอยากค้นพบเพิ่มเติมเกี่ยวกับการสร้างแอปพลิเคชันนี้ ควรดู YouTube Video ของ Bobby เรายังมี Variety ของ Applications ให้ Inspire บน Redis Launchpad
จากการสร้าง Real-time Bus Tracking Systems ใน Helsinki ไปจนถึงการปกป้อง Crop Insurers ใน Developing Nations Programmers จากทั่วโลกกำลังใช้ Redis เพื่อสร้างความแตกต่างในชีวิตประจำวัน และคุณก็สามารถทำได้!
Who created this application?
Bobby Donchev
Bobby เป็น Dynamic Programming Engineer ที่มีประสบการณ์เกิน 12 ปี ในการ Design และ Implement Systems สำหรับ Clients
อย่าลืมดู GitHub Page ของเขาเพื่อ Stay Up-to-date กับ Projects ทั้งหมดที่เขาเกี่ยวข้อง