RRF

RRF

RRF (Reciprocal Rank Fusion) ແມ່ນວິທີການໃຫ້ຄະແນນທີ່ລວມເອົາຜົນລັດຂອງການຈັດອັນດັບຈາກຫຼາຍວິທີການຄົ້ນຫາເຂົ້າດ້ວຍກັນ. ໂດຍການບວກຄ່າສ່ວນກັບຂອງອັນດັບໃນແຕ່ລະວິທີການ, ສາມາດລວມລະບົບຄະແນນທີ່ແຕກຕ່າງກັນໄດ້ໂດຍບໍ່ຕ້ອງຜ່ານການ normalization.

ໃນ RAG pipeline, ການໃຊ້ຮູບແບບ hybrid ທີ່ລວມການຄົ້ນຫາດ້ວຍຄີເວີດໂດຍ BM25 ແລະ vector search (semantic search) ເຂົ້າດ້ວຍກັນແມ່ນເປັນເລື່ອງທົ່ວໄປ. ຢ່າງໃດກໍຕາມ, ເນື່ອງຈາກ score ຂອງ BM25 ແລະ cosine similarity ມີ scale ແລະ distribution ທີ່ແຕກຕ່າງກັນຢ່າງສິ້ນເຊີງ, ການນຳເອົາມາບວກກັນແບບງ່າຍໆຈຶ່ງບໍ່ໃຫ້ຜົນການລວມທີ່ມີຄວາມໝາຍ.

RRF ແກ້ໄຂບັນຫານີ້ໄດ້ຢ່າງງ່າຍດາຍ. ໂດຍໃຊ້ພຽງແຕ່ "ລຳດັບ" ຂອງເອກະສານທີ່ຖືກສົ່ງຄືນຈາກແຕ່ລະວິທີການຄົ້ນຫາ, ແລ້ວລວມ score 1 / (k + rank) ຈາກທຸກວິທີການເຂົ້າດ້ວຍກັນ. ຄ່າຄົງທີ່ k (ໂດຍປົກກະຕິ 60) ແມ່ນ parameter ທີ່ໃຊ້ປັບນ້ຳໜັກຂອງລຳດັບ, ເມື່ອຄ່າຍິ່ງໃຫຍ່, ຄວາມແຕກຕ່າງລະຫວ່າງລຳດັບຕົ້ນແລະລຳດັບທ້າຍຈະຍິ່ງຫຼຸດລົງ.

ຕົວຢ່າງການຄຳນວນ

ໃນກໍລະນີທີ່ເອກະສານໜຶ່ງປາກົດໃນລຳດັບທີ 3 ຂອງ BM25 ແລະລຳດັບທີ 7 ຂອງ vector search:

RRF score = 1/(60+3) + 1/(60+7) = 0.0159 + 0.0149 = 0.0308

ເອກະສານທີ່ຕິດລຳດັບດີພໍສົມຄວນໃນທັງສອງການຄົ້ນຫາ ມີແນວໂນ້ມທີ່ຈະຖືກຈັດລຳດັບສູງກວ່າເອກະສານທີ່ຖືກພົບໃນການຄົ້ນຫາດຽວເທົ່ານັ້ນ. ນີ້ຄືສິ່ງທີ່ນຳໄປສູ່ຄວາມໝັ້ນຄົງຂອງ hybrid search.

ຂໍ້ສັງເກດດ້ານການ implement

ເນື່ອງຈາກ RRF ບໍ່ໃຊ້ຄ່າສົມບູນຂອງ score ຕົ້ນສະບັບ, ຂໍ້ດີຄືບໍ່ຈຳເປັນຕ້ອງ calibrate score ລະຫວ່າງ search engine ຕ່າງໆ, ໃນຂະນະດຽວກັນຕ້ອງລະວັງໃນການຈັດການເອກະສານທີ່ມີລຳດັບຊ້ຳກັນຫຼາຍ ຫຼືເອກະສານ long-tail. Elasticsearch 8.x ຂຶ້ນໄປ, Weaviate, Qdrant ແລະ vector DB ຫຼັກໆອື່ນໆ ຮອງຮັບ RRF ແບບ native.