1 คะแนน โดย eastlighting1 16 일 전 | ยังไม่มีความคิดเห็น | แชร์ทาง WhatsApp

ผมเป็นนักศึกษาที่จบปริญญาโทจากห้องแล็บที่ทำงานเกี่ยวกับ 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 แบบนี้?', 'ทำไมเบนช์มาร์กนี้ถึงทำแบบนี้?' ก็ยินดีต้อนรับครับ

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น