返回首页
最新
我想深入学习继承、抽象和封装。同样,我也想了解接口和抽象类的必要性。我希望学习如何设计对象。
我正在使用Java。
我找到了一门看起来很不错的课程,但它并不是免费的(就像世界上所有好的东西一样)。
https://course.ccs.neu.edu/cs3500/
它推荐了《Effective Java》、《设计模式:可复用面向对象软件的基础》(GoF)、《Head First 设计模式》等书籍。但这些书大多数更像是风格指南。
我目前处于一个阶段,无法理解如何设计面向对象的程序。我一直疯狂地在Main类下编写所有代码。
我需要一本详细的课程或书籍来学习这些,因为我学习得很慢。而且我这样做是为了乐趣,所以没有时间限制。
有像Grady Booch和Craig Larman的书,但我觉得它们有点枯燥。不过我可能会改变主意。
嘿,HN!我最近开源了 Pyversity,这是一个轻量级的库,用于多样化检索结果。大多数检索系统仅优化相关性,这可能导致前 k 个结果看起来几乎相同。Pyversity 能够高效地重新排序结果,以平衡相关性和多样性,呈现出仍然相关但不那么冗余的项目。这有助于改善检索、推荐和 RAG 流程,而不会增加延迟或复杂性。
主要特点:
- 统一 API:一个函数(diversify)支持几种知名策略:MMR、MSD、DPP 和 COVER(未来还会增加更多)。
- 轻量级:唯一的依赖是 NumPy,使得包体积小且易于安装。
- 快速:所有支持的策略都有高效的实现;在毫秒级别内多样化结果。
目前,使用交叉编码器进行重新排序非常流行,但成本也很高。根据我的经验,通常可以通过更简单、更快速的方法来改善检索结果,比如这个包中实现的方法。这有助于检索、推荐和 RAG 系统呈现更丰富、更具信息量的结果,确保每个新项目都能提供新的信息。
代码和文档:github.com/pringled/pyversity
如果您有任何反馈或对其他多样化策略的建议,请告诉我!