Show HN: Khoj - สมองที่สองและแชตออฟไลน์ด้วย Llama 2
(github.com/khoj-ai)- Khoj คือแอป AI ส่วนบุคคลที่ช่วยขยายศักยภาพของผู้ใช้ และมีสถาปัตยกรรมที่ขยายได้ตั้งแต่ AI ส่วนตัวแบบ on-device ไปจนถึง AI ระดับองค์กรขนาดคลาวด์
- สามารถแชตกับ LLM ได้ทั้งแบบโลคัลหรือออนไลน์ โดยมีตัวอย่างโมเดล เช่น llama3, qwen, gemma, mistral, gpt, claude, gemini, deepseek
- รับคำตอบได้จากอินเทอร์เน็ตและเอกสารต่าง ๆ โดยรองรับรูปแบบเอกสาร เช่น รูปภาพ, PDF, Markdown, org-mode, Word, ไฟล์ Notion เป็นต้น
- เข้าถึงได้จาก Browser, Obsidian, Emacs, Desktop, Phone, Whatsapp และรองรับการสร้าง เอเจนต์ ที่มีคลังความรู้, เพอร์โซนา, โมเดลแชต และเครื่องมือที่ปรับแต่งได้
- รองรับการทำวิจัยซ้ำ ๆ แบบอัตโนมัติ, การส่งจดหมายข่าวส่วนตัวและการแจ้งเตือนอัจฉริยะเข้า inbox, การสำรวจเอกสารที่เกี่ยวข้องผ่าน การค้นหาเชิงความหมาย ขั้นสูง, การสร้างภาพ, การสนทนาด้วยเสียง และการเล่นข้อความกลับ
- เป็นโอเพนซอร์สและสามารถ self-host ได้ โดยรันแบบส่วนตัวบนคอมพิวเตอร์ของผู้ใช้ หรือใช้งานผ่าน cloud app ได้
- เวอร์ชัน Enterprise มีให้ใช้งานในรูปแบบบริการคลาวด์, on-premise และโซลูชันแบบไฮบริด
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
บนหน้าแลนดิ้งเพจของเว็บไซต์ ผมไม่เห็นการกล่าวถึง Llama หรือกรณีใช้งานแบบออฟไลน์เลย ดูเหมือนจะพูดถึงแค่การใช้งานออนไลน์ผ่าน OpenAI เท่านั้น
อยากรู้ด้วยว่าใช้โมเดลขนาดไหนและไฟน์จูนแบบใด รวมถึงมองประสิทธิภาพในกรณีใช้งานนี้อย่างไร
ผมได้ลองใช้ Llama 2 ขนาด 7B และ 13B มานิดหน่อย และรู้สึกว่ามันกิน RAM ค่อนข้างมากบนเครื่องระดับผู้บริโภค เลยคาดหวังกับความเป็นไปได้นี้มากจริง ๆ
ยังสงสัยด้วยว่าการค้นหาเป็นวิธีที่ใช้ embedding กับ vector DB แล้วเพิ่มการกรองเมตาดาต้าเสริมอย่างคำสั่งวันที่เข้าไปหรือไม่
Khoj ใช้ Llama 7B 4-bit quantized GGML ของ TheBloke
น่าจะใกล้เคียงกับโมเดลแชตออฟไลน์ตัวแรกที่ให้คำตอบต่อคำถามผู้ใช้ได้สอดคล้องเมื่อใส่โน้ตเข้าไปเป็นบริบท และก็น่าสนใจที่มันมีความเป็นภาษาสนทนามากกว่า GPT-3.5+ ด้วย
ถ้าโฮสต์เองแล้วมีการรับประกันว่าข้อมูลส่วนตัวจะไม่ถูกส่งไปยังบริการระยะไกลเลย การเขียนเรื่อง การรับประกันความเป็นส่วนตัว ให้ชัดเจนมาก ๆ จะช่วยได้มาก
เห็นสิ่งนี้แล้วรู้สึกว่าเจ๋งมาก และผมมองว่า การรันบนเครื่อง คืออนาคตที่แท้จริงของ AI
ผมลองรันบน M2 MacBook Air เครื่องเล็ก ๆ แล้วมันค้างสนิทไปเลย
ทำให้นึกถึงสมัยก่อนที่พีซีติดไวรัส แล้วพอขยับเมาส์ต้องรออีก 45 วินาทีกว่าเคอร์เซอร์จะขยับ รู้สึกคิดถึงแบบแปลก ๆ ด้วยซ้ำ
คงต้องลดความคาดหวังด้านประสิทธิภาพสำหรับ Air เครื่องนี้ และนี่เป็นครั้งแรกที่เจอเรื่องแบบนี้
โมเดล 7B มักทำงานได้ดีถ้ามี unified memory อย่างน้อย 16GB แต่ผมเคยเห็น Mac 8GB ลำบากพอสมควร
เป็นไปได้ไหมที่จะรับประวัติเว็บในแต่ละวัน แล้ว สรุปเป็นโน้ต ว่าผมค้นคว้าอะไรไปบ้าง
มันกำลังเข้าใกล้อุดมคติของ AI ส่วนตัวมากขึ้นเรื่อย ๆ
รอไม่ไหวแล้ว อีกไม่กี่ปีผมน่าจะมีสมองดิจิทัลที่เต็มไปด้วยทุกสิ่งที่ผมรู้
การทำส่วนขยายเบราว์เซอร์ที่สรุปประวัติเบราว์เซอร์รายวันคงไม่ใช่งานใหญ่มากนัก และน่าจะมีอะไรคล้าย ๆ กันอยู่แล้วด้วย
การทำให้เส้นทางดิจิทัลทั้งหมดถูกทำดัชนีและย่อยให้อ่านง่ายได้คงมีคุณค่ามากจริง ๆ
หวังว่า Khoj จะกลายเป็นแบบนั้นได้
อยากรู้ว่ามีเครื่องมือแนะนำที่ทำฟีเจอร์แบบนี้ไหม
หรือไม่ก็อยากหาคนมาร่วมกันทำ
PostHog telemetry ใช้ทำอะไร
ไม่เข้าใจว่าทำไมในเอกสารถึงไม่มีอะไรเลย และทำไมถึงไม่มีวิธี opt-out ที่ชัดเจน
เช่น เพื่อดูว่าผู้คนใช้ Markdown หรือ org เป็นต้น
ข้อมูลทั้งหมดถูกเก็บแบบไม่ระบุตัวตนโดยสมบูรณ์ และไม่มีข้อมูลที่ระบุตัวตนได้ถูกส่งไปยังเซิร์ฟเวอร์ telemetry
หากต้องการ opt-out ให้ตั้งค่า
should-log-telemetryเป็น false ในkhoj.ymlเราได้เพิ่มรายการข้อมูลที่เก็บและวิธีการลงในเอกสารแล้ว: https://docs.khoj.dev/#/telemetry
นอกเหนือจากนั้น โปรเจกต์นี้ทำงานได้ดีจนน่าทึ่ง
ดูเป็นโปรเจกต์ที่เจ๋งมาก
ถ้าทำ การทำดัชนีไดเรกทอรี PDF ได้ และทำ OCR ให้ PDF เพื่อให้ทำดัชนีเอกสารสแกนได้ด้วยก็คงดีมาก
อาจอยู่นอกขอบเขตโปรเจกต์ตอนนี้ แต่เมื่อไม่กี่วันก่อนผมก็เพิ่งคิดว่าอยากมีเครื่องมือแบบนี้
Khoj สามารถทำดัชนี ไดเรกทอรี PDF เพื่อการค้นหาและแชตได้
อย่างไรก็ตาม ตอนนี้ยังประมวลผลไฟล์ PDF ที่สแกนซึ่งไม่มีข้อความให้เลือกได้ไม่ได้
ถ้ารองรับไฟล์แบบนั้นได้ด้วยก็คงดี และแค่ต้องลงมือ implement
หวังว่าจะทำได้เร็ว ๆ นี้
อยากให้มัน crawl ไฟล์ PDF, ดาวน์โหลด, สกรีนช็อต, รูปภาพ ฯลฯ แล้วแสดง tree เชิงตรรกะของการจัดระเบียบไฟล์ และให้แก้ไขได้ประมาณว่า “เพิ่ม PDF ที่เกี่ยวข้องกับหัวข้อนี้ไว้ตรงนี้ แล้วจัดเรียงตามแหล่งที่มา/ผู้เขียน จากนั้นย้ายสกรีนช็อตมาที่นี่ตามลำดับวันที่”
ผมอยากมีคอมพิวเตอร์ที่เรียกแค่ว่า “COMPUTER.” ได้มาตลอด
พอตะโกนว่า “COMPUTER!” มันกลับตอบว่า “ท่านครับ ท่านต้องใช้คีย์บอร์ด” โอ้ คีย์บอร์ด ช่างโบราณเสียจริง
ดูเหมือนจะใช้ gpt4all เลยสงสัยว่ามี วิธีที่รองรับอย่างเป็นทางการในการเปลี่ยนโมเดล inference บนเครื่อง ไหม
แอปจำนวนมากที่ออกแบบมาสำหรับ completion/chat API ของ OpenAI สามารถทำงานได้แทบเหมือนเดิมเพียงแค่ชี้ไปยัง endpoint ที่ llama-cpp-python [0] ให้มา และยังใช้โมเดลกับ quantization หลายแบบที่ llama.cpp รองรับได้
แบบนั้นจะรันโมเดลที่ใหญ่ขึ้นบนฮาร์ดแวร์ที่ต้องการได้ รวมถึงการเร่งด้วย Metal บน Apple Silicon หรือ NVIDIA GPU และยังใช้พร็อกซีอื่นอย่าง openrouter.io ได้ด้วย
โดยส่วนตัวผมใช้ openrouter.io บ่อย เพราะรองรับโมเดล 100k ของ Anthropic
[0]: https://github.com/abetlen/llama-cpp-python
น่าจะเปลี่ยนบรรทัดนี้ https://github.com/khoj-ai/khoj/blob/master/src/khoj/process... เป็นโมเดลที่ต้องการได้
ต้อง build image โลคัลเองด้วย
docker-composeแต่ก็น่าจะค่อนข้างง่ายนักพัฒนาหลายคนอยากลองโมเดลต่าง ๆ แต่เราต้องการมุ่งไปในทิศทางที่ทั้งใช้งานง่ายและช่วยได้ลึก
ทรัพยากรมีจำกัด เลยกำลังคิดอยู่นิดหน่อยว่าควรโฟกัสตรงไหน
ในฐานะคนที่เพิ่งเริ่มใช้ Obsidian และลองเล่น AI แชตอยู่ นี่เป็นสิ่งที่ยอดเยี่ยมจริง ๆ
ยังไม่ได้ลองใช้ แต่ของแบบนี้ควรมีอยู่แน่นอน
ถ้าไม่มี GPU ที่ดีพอ ก็คงยังไม่ถึงขั้นใช้งานได้ดีมากบน ฮาร์ดแวร์สำหรับผู้บริโภค แต่มั่นใจว่าจะเป็นไปได้ภายในไม่กี่ปี หรืออาจเร็วกว่านั้น
โลโก้ก็สวย และชอบสีด้วย
สำหรับกรณีใช้งานแบบนี้ Llama 2 น่าจะมีความสามารถเพียงพอ โดยเฉพาะเมื่อความเป็นส่วนตัวสำคัญ ก็ทำให้แรงจูงใจในการจ่ายเงินให้ ChatGPT ลดลง
ขอให้พัฒนาต่อไปให้ดี
ผมลองใช้ Khoj มาหนึ่งวันแล้ว มันเรียบร้อยและทำออกมาได้ดีจริง ๆ
มีข้อสังเกตบางอย่าง
ผมได้เปิดอิชชูและข้อเสนอเกี่ยวกับเรื่องนี้ไว้ที่นี่: https://github.com/khoj-ai/khoj/issues/389
ผมเพิ่มโน้ตไว้ในอิชชู GitHub ข้างต้นด้วย
เช่น อยากรู้ว่าสามารถตั้งค่าโมเดล huggingface/gpt4all ได้ไหม และถ้าได้ ระบบจะดาวน์โหลดอัตโนมัติตามชื่อหรือเปล่า หรือว่าต้องวางไฟล์
.binกับ YAML ไว้ในโวลุ่มที่ไหนสักแห่งอย่างที่เขียนไว้ในเอกสาร คุณสามารถดูเซิร์ฟเวอร์เทเลเมทรี[1] ได้โดยตรง
ถ้าเห็นอะไรแปลก ๆ แจ้งมาได้ แล้วจะออกฮอตฟิกซ์ให้ทันที
เมทาดาต้าเทเลเมทรีทั้งหมดก็ดูได้ที่นี่[2]
[1]: https://github.com/khoj-ai/khoj/tree/master/src/telemetry
[2]: https://github.com/khoj-ai/khoj/blob/master/src/khoj/routers...
การตั้งค่า
docker-composeค่อนข้างเฉพาะทางเล็กน้อย รายละเอียดดูได้ในอิชชูนั้นขอบคุณสำหรับข้อสังเกตเรื่องการผสานกับ GPU และเพื่อให้ชัดเจน ตอนนี้เราใช้การปรับให้เหมาะกับ GPU สำหรับการทำดัชนี แต่ยังไม่ได้ใช้กับแชตโลคัลที่ใช้ Llama
กำลังทำให้ส่วนนั้นใช้งานได้อยู่
./serverใน ggml?ถ้ากำลังโทเคนไนซ์บริบทการค้นหาไว้ล่วงหน้า อาจจะยากขึ้นก็ได้
โปรเจกต์นี้เจ๋งจริง ๆ
ที่พูดถึง
C-sน่าสนใจดีisearch-forwardมักใช้สำหรับ การค้นหาแบบตรงตัวอักษร ที่มีความหน่วงต่ำอยากรู้ว่าในเวิร์กโฟลว์แบบไหน Khoj จะให้ความหน่วงที่ยอมรับได้หรือให้ประโยชน์ที่ดีกว่า จนใช้แทน isearch ได้
มีตัวอย่างไหมว่าใช้อย่างไรตอนสำรวจเอกสาร?
มันให้ประสบการณ์ค้นหาทันทีระหว่างพิมพ์ผ่าน อินเทอร์เฟซค้นหาด้วยภาษาธรรมชาติ ไม่ใช่คีย์เวิร์ด
เวิร์กโฟลว์ของผมเป็นแบบนี้
C-c s sRETn n o 2[1]:
C-c sถูก bind ไว้กับ transient menu ของkhoj[2] https://orgmode.org/manual/Speed-Keys.html