โมเดลและแพลตฟอร์ม AI
Pinecone เปิดตัว Pg_pinecone ส่วนขยายการค้นหาสำหรับ Postgres แบบโอเพนซอร์ส

เมื่อวันที่ 27 ตุลาคม 2026 Pinecone เปิดตัว pg_pinecone ส่วนขยายสำหรับ Postgres แบบโอเพนซอร์สภายใต้สัญญาอนุญาต Apache 2.0 ซึ่งนำเอนจินค้นหาเวกเตอร์ที่บริษัทระบุว่าใช้งานในระดับขนาดใหญ่ มาใช้กับคอลัมน์ pgvector ที่แอปพลิเคชันจัดเก็บไว้แล้ว จากผลการทดสอบที่บริษัทรายงาน ดัชนีแบบ native ของส่วนขยายสำหรับเวกเตอร์ 1 ล้านรายการที่มี 768 มิติ มีขนาด 136 MB เทียบกับ 2.0 GB สำหรับ HNSW บน halfvec และ 4.1 GB สำหรับเวกเตอร์ขนาดเต็ม
การเปิดตัวนี้นำเสนอผ่านโพสต์ประกาศที่เขียนโดย Harshita Daddala และ Anthony Mahanna โพสต์ระบุว่า วิธีทั่วไปในการค้นหาเวกเตอร์บน Postgres คือใช้ดัชนีแบบกราฟ เช่น HNSW ซึ่งต้องใช้หน่วยความจำเพิ่มขึ้นเรื่อย ๆ เพื่อรักษาประสิทธิภาพ ใช้เวลาสร้างนาน และมีความแม่นยำลดลงเมื่อค้นหาโดยใช้ตัวกรอง เมื่อจำกัดคำค้นไว้เฉพาะผู้ใช้หรือผู้เช่ารายใดรายหนึ่ง ดัชนีแบบกราฟอาจส่งคืนแถวน้อยกว่าค่าที่กำหนดไว้ใน LIMIT ของคำค้น แต่ pg_pinecone ใช้ตัวกรองระหว่างการค้นหา ซึ่ง Pinecone ระบุว่าช่วยให้แม้จะกำหนดขอบเขตการค้นหาแคบ ก็ยังส่งคืนผลลัพธ์ได้ครบตามจำนวนที่ต้องการ และเมื่อใช้เอนจินเริ่มต้น ข้อมูลจะไม่ออกจาก Postgres
สามเอนจินเบื้องหลังดัชนีเดียว
pg_pinecone ทำงานกับคอลัมน์เวกเตอร์ที่จัดเก็บไว้ใน pgvector อยู่แล้ว แอปพลิเคชันเชื่อมต่อกับ Postgres ด้วยวิธีเดิมและส่งคำสั่ง SQL แบบเดิม เช่น ORDER BY embedding <=> $1 LIMIT 10 ขณะที่ตาราง รวมถึงเวกเตอร์ทั้งหมด ยังคงอยู่ที่เดิม และ Postgres ยังคงเป็นแหล่งข้อมูลหลัก
แต่ละตารางใช้เอนจินหนึ่งในสามแบบ เอนจิน native ซึ่งเป็นค่าเริ่มต้น จะสร้างและค้นหาดัชนีภายใน Postgres ทั้งหมด โดยไม่ต้องมีบัญชี Pinecone, API key หรือการเรียกใช้เครือข่าย ส่วนเอนจิน pgvector ใช้ค้นหาด้วยดัชนี pgvector ที่มีอยู่แล้ว ไม่ว่าจะเป็น HNSW หรือ IVFFlat โดยคลัง GitHubของโครงการระบุว่าเอนจินนี้เหมาะกับตารางที่มีดัชนี pgvector อยู่แล้วและไม่มีการใช้ตัวกรอง ส่วนเอนจินระยะไกลจะส่งคำค้นไปยังดัชนีแบบ serverless ในบริการที่ Pinecone จัดการ ซึ่งออกแบบมาสำหรับตารางที่เติบโตจนเกินขีดความสามารถของเซิร์ฟเวอร์ Postgres เครื่องเดียว การสลับเอนจินของตารางทำได้ด้วยการเรียก pinecone.set_engine() เพียงครั้งเดียว โดยไม่ต้องเปลี่ยนคำค้น และสามารถย้อนกลับการสลับแต่ละครั้งได้
วิธีค้นหาของเอนจิน native
เช่นเดียวกับ HNSW ของ pgvector เอนจิน native ใช้อัลกอริทึมค้นหาเพื่อนบ้านใกล้ที่สุดโดยประมาณ แต่แทนที่กราฟด้วยดัชนีไฟล์ผกผันที่จัดกลุ่มเวกเตอร์คล้ายกันไว้เป็นคลัสเตอร์ เวกเตอร์แต่ละรายการจัดเก็บเป็นรหัส RaBitQ แบบควอนไทซ์ ซึ่งใช้ประมาณหนึ่งบิตต่อมิติ พร้อมค่าปรับแก้เพิ่มเติมเล็กน้อย โดยโพสต์ระบุว่าวิธีนี้มาจากงานของ Gao และ Long ในงาน SIGMOD 2024 รหัสของแต่ละคลัสเตอร์จะถูกจัดเก็บรวมกัน ทำให้การค้นหาอ่านเพียงไม่กี่เพจที่อยู่ติดกัน แทนที่จะต้องไล่ไปตามกราฟ
การค้นหามีสามขั้นตอน ได้แก่ ตรวจสอบคลัสเตอร์ที่อยู่ใกล้ที่สุดโดยเปรียบเทียบเวกเตอร์คำค้นกับจุดศูนย์กลางของแต่ละคลัสเตอร์ คำนวณระยะทางโดยประมาณของแต่ละแถวจากรหัส RaBitQ แล้วเก็บตัวเลือกที่ดีที่สุดไว้ จากนั้นจัดอันดับตัวเลือกเหล่านั้นใหม่โดยใช้เวกเตอร์เต็มจากตาราง
การกรองเกิดขึ้นภายในขั้นตอนการค้นหานั้น Pinecone ระบุว่า HNSW ของ pgvector ใช้ตัวกรองภายหลัง โดยค้นหาเพื่อนบ้านที่ใกล้ที่สุดก่อนแล้วจึงใช้เงื่อนไข WHERE ตามหลัง ทำให้ตัวกรองที่มีขอบเขตแคบตัดตัวเลือกส่วนใหญ่ออกไป และการสแกนซ้ำเพื่อเติมรายการให้ครบก็เพิ่มเวลาในการประมวลผล และลดความแม่นยำเมื่อใช้ relaxed_order เอนจิน native จัดเก็บค่าของคอลัมน์ตัวกรองไว้ถัดจากรหัสของแต่ละแถว และนับจำนวนแถวแยกตามค่าในระหว่างสร้างดัชนี สำหรับตัวกรองที่มีขอบเขตแคบ ซึ่งโดยค่าเริ่มต้นหมายถึงไม่เกิน 3% ของแถว เอนจินจะกรองก่อน โดยสแกนทุกแถวที่ตรงเงื่อนไขในทุกคลัสเตอร์และให้คะแนนแต่ละแถวด้วยเวกเตอร์เต็ม เพื่อให้ได้ผลลัพธ์ที่แม่นยำ สำหรับตัวกรองที่มีขอบเขตกว้างกว่า เอนจินจะใช้การกรองในขั้นตอนเดียว โดยค้นหาคลัสเตอร์ที่ใกล้ที่สุดได้สูงสุดครึ่งหนึ่ง และตรวจสอบตัวกรองภายในแต่ละคลัสเตอร์ก่อนให้คะแนน
ข้อมูลที่เพิ่มเข้ามาใหม่จะถูกจัดเข้าในคลัสเตอร์ที่ใกล้ที่สุดและค้นหาได้ทันที เนื่องจากจุดศูนย์กลางยังคงอยู่ในตำแหน่งที่กำหนดไว้ตอนสร้างดัชนี โพสต์จึงแนะนำให้เรียกใช้ REINDEX หรือเปิดใช้การบำรุงรักษาอัตโนมัติหลังมีการเปลี่ยนแปลงครั้งใหญ่ เช่น การโหลดข้อมูลจำนวนมากจนตารางมีขนาดเพิ่มขึ้นเป็นสองเท่า เพื่อปรับสมดุลคลัสเตอร์ใหม่
ผลการทดสอบที่ Pinecone รายงาน
Pinecone เปรียบเทียบเอนจิน native กับดัชนี HNSW ของ pgvector โดยใช้เวกเตอร์ขนาดเต็มและ halfvec กับเวกเตอร์ wiki_dpr จำนวน 1 ล้านรายการที่มี 768 มิติ การทดสอบดำเนินการบนอินสแตนซ์ AWS r6id.4xlarge ที่มี vCPU 16 คอร์และ RAM 128 GB โดยวัดเวลาแฝงเมื่อไม่มีตัวกรอง เวลาในการสร้างดัชนี และขนาดดัชนีในการทดสอบรอบหนึ่งบน PostgreSQL 17 วัดการค้นหาแบบใช้ตัวกรองอีกรอบหนึ่งบน PostgreSQL 18 และทดสอบการจำกัดหน่วยความจำในรอบที่สาม รายงานเวลาแฝงเป็นค่ามัธยฐาน p50 ที่ k=10 โดยใช้ไคลเอ็นต์หนึ่งตัว และบริษัทระบุว่าการตั้งค่าทั้งหมดพร้อมคำสั่งสำหรับเรียกใช้การทดสอบซ้ำอยู่ในไฟล์ README ของชุดเครื่องมือทดสอบประสิทธิภาพในคลังโครงการ
สำหรับเวกเตอร์ 1 ล้านรายการ Pinecone รายงานว่าดัชนี native มีขนาด 136 MB เทียบกับ 2.0 GB สำหรับ HNSW บน halfvec และ 4.1 GB สำหรับเวกเตอร์ขนาดเต็ม ในการค้นหาที่ไม่มีตัวกรอง บริษัทระบุว่าเวลาแฝงอยู่ที่ 1.3 ms เมื่อค่า recall เท่ากับ 0.95 เทียบกับ 1.7 ms สำหรับ HNSW บน halfvec และ 2.7 ms สำหรับเวกเตอร์ขนาดเต็ม และอยู่ที่ 2.3 ms เมื่อค่า recall เท่ากับ 0.99 เทียบกับ 4.7 ms และ 6.7 ms ตามลำดับ เมื่อใช้ตัวกรองที่ตรงกับแถว 10% Pinecone รายงานว่าเอนจิน native มีค่า recall 1.000 ในเวลา 12.3 ms เมื่อใช้การกรองในขั้นตอนเดียว ขณะที่ HNSW ซึ่งใช้การสแกนซ้ำมีค่า recall สูงสุดเพียง 0.920 ในเวลา 5.9 ms ส่วนเมื่อใช้ตัวกรอง 1% บริษัทระบุว่าค่า recall อยู่ที่ 0.981 ในเวลา 8.3 ms เวลาในการสร้างดัชนีที่รายงานคือ 45 วินาทีสำหรับเอนจิน native เทียบกับ 62 วินาทีสำหรับ HNSW บน halfvec และ 79 วินาทีสำหรับเวกเตอร์ขนาดเต็ม
ความพร้อมให้ใช้งานและฟีเจอร์เสริมของ Pinecone
pg_pinecone ต้องใช้ PostgreSQL 17 หรือ 18, สิทธิ์ผู้ใช้ระดับ superuser และติดตั้ง pgvector ไว้บนเซิร์ฟเวอร์ สามารถติดตั้งได้จากรุ่นที่ build ไว้ล่วงหน้าบน GitHub หรือจากอิมเมจ pineconeteam/pg_pinecone บน Docker Hub โดย README ระบุว่าอิมเมจนี้เป็นอิมเมจ pgvector/pgvector ที่เพิ่ม pg_pinecone เข้าไป และเผยแพร่โดยใช้แท็กหนึ่งรายการต่อ PostgreSQL major version เช่น 0.11.0-pg17 นอกจากนี้ การเรียกใช้ remote engine ยังต้องโหลดส่วนขยายผ่าน shared_preload_libraries ด้วย การตั้งค่าจะสร้างส่วนขยาย vector และ pg_pinecone และสร้างดัชนีด้วยคำสั่ง pinecone.create_index() ส่วนโปรเจ็กต์นี้สามารถ build จากซอร์สโค้ดได้โดยใช้ชุดเครื่องมือ Rust และ cargo-pgrx 0.19.2
หากใช้ Pinecone API key ซึ่งเป็นตัวเลือกเสริม remote engine จะซิงก์ embeddings ไปยังดัชนี Pinecone ในเบื้องหลัง ขณะที่การค้นหายังคงทำงานใน Postgres จนกว่าการคัดลอกจะเสร็จสิ้น บทความยังกล่าวถึงฟีเจอร์เสริมอีกสามอย่าง ได้แก่ embed() ซึ่งเรียกใช้บริการ inference ของ Pinecone เพื่อแปลงข้อความเป็น embeddings จาก SQL โดยใช้ได้กับทั้ง native engine และ remote engine และการทดลองสร้างครั้งแรกครอบคลุมอยู่ในแพ็กเกจฟรีของ Pinecone; การค้นหาข้อความเต็มรูปแบบด้วย BM25 ซึ่งทำงานควบคู่กับการค้นหาเวกเตอร์บนตารางเดียวกัน โดยสั่งค้นหาด้วย BM25, เวกเตอร์ หรือแบบไฮบริดจาก SQL ได้; และ rerank() ซึ่งจัดลำดับผลลัพธ์อันดับต้น ๆ ใหม่ด้วยโมเดล reranking ของ Pinecone
เอกสารบน docs.pinecone.io ครอบคลุมการติดตั้ง กลไกจัดเก็บข้อมูล การสลับกลไก และการค้นหาข้อความเต็มรูปแบบ ขณะที่ repository มีเอกสารอ้างอิง SQL คู่มือปฏิบัติงานสำหรับผู้ดูแลระบบ และคู่มือกู้คืนระบบเมื่อเกิดภัยพิบัติเพิ่มเติม Pinecone ระบุว่านี่เป็นรุ่นแรกของโปรเจ็กต์ กล่าวว่าเป็นผู้ดูแล pg_pinecone และตรวจสอบ pull request ทุกรายการ พร้อมทั้งระบุว่าจะจัดทำแผนงานสาธารณะจากข้อเสนอแนะที่ส่งผ่าน GitHub issues ชุมชน Discord และช่วงเวลาพบปะประจำเดือน












