ข้ามไปที่เนื้อหา
cd /blog

เหตุใดเราจึงอัปเกรดการค้นหาโค้ดเป็น voyage-4-large

[เอ็มเบดดิ้ง][การค้นหา][สถาปัตยกรรม]

> เราย้ายเอ็มเบดดิ้งโค้ดของเราไปที่ voyage-4-large — ปัจจุบันอยู่อันดับหนึ่งของตารางอันดับการค้นคืนโค้ด RTEB สาธารณะ ฉบับตรงไปตรงมา: การแลกเปลี่ยนที่เรายอมรับ สิ่งที่เราทำดัชนีจริง และเหตุผลที่เราจ่ายเงินเพื่อเอ็มเบดดิ้งระดับพรีเมียม

ตัวเลขเบนช์มาร์กในบทความนี้สะท้อนตารางอันดับของ RTEB ณ วันที่เผยแพร่ (มิถุนายน 2026) ตารางอันดับเปลี่ยนแปลงได้ ให้ถือว่าอันดับเป็นภาพตัดขวาง ณ ช่วงเวลาหนึ่ง ไม่ใช่ข้อเท็จจริงถาวร

Semantic search ดีได้แค่ที่เอ็มเบดดิ้งข้างล่างมันดี

เมื่อ agent ถาม Maguyva ว่า “เราจัดการ retry ตรงไหน” มันไม่ได้ grep หาคำว่า “retry” มันกำลังถามหา ความหมาย — ลูป backoff, circuit breaker, สิ่งที่ห่อการเรียกที่ไม่เสถียร คำถามนั้นถูกตอบโดยโมเดลเวกเตอร์ที่แปลงโค้ดให้เป็นจุดในพื้นที่แล้วหาเพื่อนบ้าน เลือกโมเดลที่ดีกว่า แล้วทุก semantic คิวรีในผลิตภัณฑ์จะคมชัดขึ้นอย่างเงียบๆ

เราจึงเปลี่ยนของเรา ณ เดือนมิถุนายน 2026 code เอ็มเบดดิ้งของ Maguyva รันบน voyage-4-large แทนที่ voyage-code-3

เบนช์มาร์ก

เราไม่ได้ตัดสินใจนี้ด้วยความรู้สึก Retrieval Embedding Benchmark (RTEB) สาธารณะจัดอันดับโมเดลเอ็มเบดดิ้งบนงาน retrieval จริง และบนตารางอันดับ Code ของมัน voyage-4-large อยู่ที่ อันดับหนึ่งโดยรวม (90.86) — นำหน้า gemini-embedding-2-preview (90.26) และที่น่าสังเกตคือ นำหน้าโมเดลที่เราใช้อยู่แล้ว voyage-code-3 (89.73, อันดับ 3)

นั่นคือช่องว่างสัมบูรณ์ที่เล็ก แต่มันคือช่องว่างในทิศทางที่ถูกต้อง บนเบนช์มาร์กสาธารณะ ในงานที่เราสนใจอย่างแท้จริง: การค้นคืนโค้ดตามความหมาย

การแลกเปลี่ยนที่เรายอมรับ: Binary Quantization

นี่คือส่วนที่บทความ “เราอัปเกรดโมเดลของเรา” ส่วนใหญ่มักละไว้

Maguyva ไม่เก็บเวกเตอร์แบบ full-precision เราเก็บเอ็มเบดดิ้งแบบ ไบนารีควอนไทซ์: เวกเตอร์ 2048 มิติแต่ละตัวยุบเหลือซิกเนเจอร์ 2048 บิต — 256 ไบต์ต่อเวกเตอร์ ซิกเนเจอร์เหล่านั้นถูกค้นด้วย Hamming distance มีดัชนีและแบ่งพาร์ติชันต่อผู้เช่า

นั่นคือการแลกเปลี่ยนที่ตั้งใจ Binary quantization ยอมสละความแม่นยำในการค้นคืนบางส่วน แลกกับพื้นที่จัดเก็บที่เล็กลงอย่างมาก และคณิตศาสตร์ระยะทางที่เร็วและถูก โดยไม่ต้องมีฐานข้อมูลเวกเตอร์แยกต่างหากให้ดูแล สำหรับผลิตภัณฑ์ที่ทำดัชนีทั้ง repository ต่อเวิร์กสเปซ เศรษฐศาสตร์นั้นสำคัญกว่าการบีบเอาเศษเสี้ยวสุดท้ายของคะแนนเบนช์มาร์กออกมา

voyage-4-large เข้ากับดีไซน์นี้โดยไม่ต้องบังคับให้ย้ายชั้นพื้นที่จัดเก็บ: มันสร้างผลลัพธ์ 2048 มิติ เหมือนกับ voyage-code-3 ดังนั้นคอลัมน์ bit(2048) และเส้นทาง Hamming search ของเราจึงไม่เปลี่ยนแปลง โมเดลดีขึ้น schema ยังคงเดิม

โค้ดเป็นแค่จุดเริ่มต้น

Maguyva คือเครื่องมือโค้ดอินเทลลิเจนซ์ แต่เรายังเป็นลูกค้าเบอร์หนึ่งของตัวเองด้วย และเราชี้มันไปยังอีกสิ่งหนึ่ง: markdown ที่อยู่ใน repo ของเราข้างๆ โค้ด บันทึกการตัดสินใจเชิงสถาปัตยกรรม, runbook, สัญญา, เอกสารการเงินและนโยบาย — ทั้งหมดถูกควบคุมเวอร์ชันใน Git ทั้งหมดอยู่หลัง MCP เซิร์ฟเวอร์เดียวกัน ดัชนีเชิงความหมายเหนือ เอกสาร ไม่ใช่แค่ซอร์สโค้ด

นั่นคือเหตุผลที่ความกว้างของ voyage-4-large สำคัญพอดี ใน RTEB ตารางอันดับตระกูลเดียวกันนี้ มันคือ อันดับหนึ่งด้านการเงิน อันดับหนึ่งด้าน healthcare และอันดับหนึ่งด้านการค้นคืนข้อความโดยรวม — นำหน้า Gemini Embedding ของ Google, Embed v4 ของ Cohere และ text-embedding-3-large ของ OpenAI (Voyage เป็นผู้ร่วมสร้าง RTEB ดังนั้นเราจึงอ่านมันเป็นสัญญาณสาธารณะที่แข็งแกร่ง มากกว่าจะเป็น กรรมการที่เป็นกลางอย่างสมบูรณ์แบบ — แต่มันถูกเบนช์มาร์กแบบตัวต่อตัวกับโมเดลเชิงพาณิชย์หลักทุกตัว บนชุดข้อมูลกันไว้ทดสอบส่วนตัว) ดัชนีเดียวกันที่หาฟังก์ชันที่ถูกต้องให้ agent ก็หาข้อสัญญาที่ถูกต้องในสัญญาหรือบรรทัดที่ถูกต้องในนโยบาย — และในโดเมนเหล่านั้น voyage-4-large ไม่ใช่การประนีประนอม มันคือผู้นำ

เหตุใดเราจึงจ่ายเงินเพื่อ Embedding ระดับพรีเมียม

มีวิธีค้นหาที่ถูกกว่า และหลายวิธีก็ฟรี การค้นหาเชิงคำศัพท์ — BM25 และญาติของมัน — จับคู่คำสำคัญ รันในเครื่อง และไม่มีค่าใช้จ่าย โมเดลเอ็มเบดดิ้งแบบโอเพนซอร์สอย่าง BGE, Nomic และ embeddinggemma ให้การค้นคืนเชิงความหมายที่ พอใช้ได้ จริง และคุณสามารถโฮสต์เองได้ในราคาของ GPU หนึ่งตัว Maguyva ใช้ฝั่งฟรีด้วยเหมือนกัน: ทุกคำค้นผสาน text, AST, graph และ semantic search เข้าด้วยกัน สิ่งที่เราไม่ประหยัดคือชั้น semantic

เราจ่ายเงินต่อ token สำหรับเอ็มเบดดิ้งระดับพรีเมียม — voyage-4-large — แทนที่จะโฮสต์เองโมเดลฟรี ด้วยเหตุผลสองข้อ ข้อแรก การค้นหาด้วยคำสำคัญ อย่างเดียวตอบ “เราจัดการ retry ตรงไหน” ไม่ได้ เมื่อโค้ดเขียนว่า backoff และ circuit breaker และไม่เคยพูดคำว่า “retry” เลย — ความหมายคือประเด็นทั้งหมด ของเอ็มเบดดิ้ง และในโดเมนที่เราให้บริการ โมเดลแบบเปิดยังตามหลังโมเดลพรีเมียมอยู่: ตามหลังไม่กี่คะแนนในข้อความทั่วไป และตามหลังมากกว่านั้น ในกลุ่มเฉพาะอย่างโค้ด สัญญา และการเงิน ข้อสอง จากประสบการณ์ของเรา คุณภาพการค้นคืนหล่อหลอมคำตอบสุดท้ายมากกว่าโมเดลที่อยู่อีกฝั่งหนึ่ง — agent ที่แข็งแกร่งแต่ได้รับบริบทผิดก็ยังตอบผิดอยู่ดี และมันไม่มีวันเห็นเอกสารที่มันไม่เคยได้รับ

ดังนั้นเอ็มเบดดิ้งระดับพรีเมียมจึงเป็นบิลต่อ token ที่ขยายตามทุก repo และเอกสารที่เราทำดัชนี — และเราจ่ายมันโดยตั้งใจ สำหรับผลลัพธ์ที่ผู้ใช้ของเราได้รับ ฟังก์ชันที่ถูกต้อง หรือข้อสัญญาที่ถูกต้อง เราคิดว่าการแลกเปลี่ยนนั้นคุ้มค่า

ส่วนที่ตรงไปตรงมา

เอกสารของ Voyage เองยังคงระบุว่า voyage-code-3 เป็นโมเดลที่ปรับให้เหมาะกับโค้ด แล้วทำไมถึงย้าย?

เพราะเราอ่านเบนช์มาร์กสาธารณะ ไม่ใช่แค่ตารางโมเดลของ vendor และเบนช์มาร์กจัดให้ voyage-4-large อยู่อันดับหนึ่งสำหรับการค้นคืนโค้ด นี่คือการตัดสินใจแบบมองไปข้างหน้า: เลือกโมเดลที่ใหม่กว่าและแข็งแกร่งกว่าโดยทั่วไป แล้วยืนยันมันกับตารางอันดับสาธารณะบนงานที่สำคัญ เราสบายใจที่จะเดิมพันแบบนี้เพราะหลักฐานนั้นกว้าง — voyage-4-large ไม่ได้แค่ชนะบนโค้ด มันยังนำในการเงิน healthcare และการค้นคืนโดยรวมด้วย

พื้นฐานที่เงียบ

ทุกเครื่องมือที่เราเปิดให้ใช้ — semantic search, การรวบรวมบริบทงาน, การถาม-ตอบแบบอิงหลักฐาน — ล้วนลงเอยที่การค้นคืน เมื่อตัวค้นคืนดีขึ้น agent ที่อีกฝั่งหนึ่งได้หลักฐานที่ดีขึ้น ทำผิดทางน้อยลง และยึดคำตอบของมันไว้กับโค้ดที่ถูกต้อง — หรือข้อสัญญาที่ถูกต้อง หรือนโยบายที่ถูกต้อง โมเดลเอ็มเบดดิ้งที่คมชัดขึ้นไม่ใช่ฟีเจอร์หรูหรา มันคือพื้นฐานใต้ทุกสิ่งที่เหลือ และเราเพิ่งยกมันขึ้น คุณจะไม่สังเกตเห็น นั่นคือประเด็น

อ่านเพิ่มเติมที่เกี่ยวข้อง

เนื้อหาอื่นๆ จากบันทึกการพัฒนา Maguyva

การพัฒนาตนเองเชิงเวียนซ้ำของภาษา: กรินด์ Code Intelligence ครอบคลุมเกือบ 280 ภาษา_

เรารองรับ code intelligence สำหรับเกือบ 280 ภาษา ไม่มีมนุษย์คนไหนตรวจสอบด้วยมือได้ทั้งหมดนั้น เราจึงสร้างลูปการพัฒนาตนเองเชิงเวียนซ้ำของภาษา — สุ่มตรวจ ใช้ LLM เป็นผู้ตัดสิน แก้ไขทีละจุด ตรวจสอบซ้ำ — และรันมันด้วยทีม agent ที่แยกจากกันจนกว่าการแตกโครงสร้างจะถูกต้องจริง ไม่ใช่แค่เขียวผ่าน

[สถาปัตยกรรม][ภาษา][เอเจนต์]

ค้นหาแบบผสานหลายโหมด: เลือกตัวค้นคืนที่ใช่สำหรับทุกคำค้น_

คำค้นอย่าง 'parseConfig ถูกนิยามที่ไหน' ต้องการการค้นหาที่ต่างจาก 'auth ทำงานอย่างไร' Maguyva จำแนกเจตนา ให้น้ำหนักทั้งสี่รูปแบบการค้นคืนตามนั้น แล้วรวมผลลัพธ์ด้วย weighted Reciprocal Rank Fusion

[การค้นหา][สถาปัตยกรรม]

การสังเกตการณ์ Agent: Hooks, Alloy และ Grafana_

เราเชื่อมต่อ Claude Code และ Codex เข้ากับ Grafana สแตกเดียวกันด้วย OpenTelemetry และ Alloy จากนั้นใช้ trace และบันทึกเพื่อค้นหาและแก้ไขปัญหาพฤติกรรมของ agent ที่ต้นตอ

[อ็อบเซิร์วบิลิตี้][Grafana][OpenTelemetry][สถาปัตยกรรม]