ผมได้ลองพัฒนา Graph Dataframe และ Database ขึ้นมา
(github.com/eastlighting1)ผมเป็นนักศึกษาที่จบปริญญาโทจากห้องแล็บที่ทำงานเกี่ยวกับ knowledge graph, ontology และเรื่องทำนองนั้น
หลังเรียนจบ ผมก็คิดอยู่ว่าจะเสริมประสบการณ์ด้านไหนได้บ้าง แล้วก็นึกถึงสิ่งที่ทางมหาวิทยาลัยเน้นมาตลอดอย่าง 'โอเพนซอร์ส' ขึ้นมา จากนั้นพอลองคิดไอเดียหลาย ๆ อย่าง ก็ทำให้นึกถึงตอนสมัยเรียนโทที่เคยพยายามทำงานวิจัยโดยใช้ neo4j แต่ต้องล้มเลิกไปเพราะ IO ช้าเกินไป เลยคิดว่าอยากลองพัฒนาไลบรารีที่ยังคงประสิทธิภาพในระดับไลบรารีที่มีอยู่แล้ว แต่ทำงานได้เร็วขึ้น ภายใต้หัวข้อ Graph Ecosystem ผมจึงกำลังพัฒนาไลบรารีด้านกราฟหลายตัวด้วยความช่วยเหลือของ AI Agent
-
Lynxes
- Lynxes เป็นไลบรารี Dataframe ที่ตั้งเป้าให้เป็น Graph เวอร์ชันของ Polars เพราะงั้นชื่อก็เลยต่อยอดจาก Pandas - Polars มาเป็น Lynxes นี่แหละครับ (Lynx คือแมวป่าชนิดหนึ่ง)
- ผมยังทำไฟล์ข้อมูลชื่อ gf ที่หน้าตาคล้ายกับ RDF ของ ontology ขึ้นมาใช้ร่วมกันด้วย
- มันพัฒนาบน Apache Arrow แต่เจ้าตัวนี้โดยพื้นฐานแล้วไม่ได้รองรับ CRUD แบบ dataframe! เลยทำให้ผมคิดหนักพอสมควรว่าจะจัดการเรื่องนี้ยังไง
- ถ้าดูจากเบนช์มาร์ก พูดกันตรง ๆ คือมันยังไม่เร็วกว่าไลบรารีที่มีอยู่แล้วอย่าง networkx หรือ igraph แต่ก็ไม่ได้ใช้งานลำบากอะไร สำหรับผมตอนนี้ก็ถือว่าน่าพอใจอยู่ครับ
-
CaracalDB
- CaracalDB เป็นไลบรารี Database ที่ตั้งเป้าให้เป็น Graph DB เวอร์ชันของ DuckDB คิดว่าหลายคนน่าจะเดาออกทันทีว่าโครงสร้างชื่อแบบ X + DB ได้แรงบันดาลใจมาจาก DuckDB ส่วน Caracal นั้นผมก็อ้างอิงคำแนะนำของ GPT ที่บอกว่าคาราคัลเป็นสัตว์ที่คล้ายกับ lynx
- CaracalDB ก็มีไฟล์ DB เฉพาะของตัวเองชื่อ .crcl เดิมทีเป็นโครงสร้างแบบไดเรกทอรี แต่พอให้ลองทำเป็นไฟล์ ก็พบว่ามันทำงานได้ดีในรูปแบบไฟล์เช่นกัน เลยโอเคมาก
- ด้วยความที่เป็น Embeded DB มันจึงเร็วกว่า Neo4j ที่ใช้เซิร์ฟเวอร์เป็นธรรมดา
ไลบรารีทั้งสองตัวอัปโหลดขึ้น pypi แล้ว จึงสามารถใช้งานได้ทันที
uv add lynxes
uv add caracaldb
นอกจากนี้ ผมยังลองทำงานด้านเบนช์มาร์กและการปรับแต่งประสิทธิภาพแยกไว้ในรีโพซิทอรีนี้ด้วย
- TASK 1 คือ Knowledge Graph, TASK 2 คือ GraphRAG และถัดไปคิดว่าจะลองทำ GNN
ตอนนี้ยังมีหลายจุดที่ขาดอยู่มาก คำวิจารณ์หรือข้อทักท้วงอย่าง 'ทำไมถึง implement แบบนี้?', 'ทำไมเบนช์มาร์กนี้ถึงทำแบบนี้?' ก็ยินดีต้อนรับครับ
ยังไม่มีความคิดเห็น