1作者: shivajikobardan8 个月前
我想深入学习继承、抽象和封装。同样,我也想了解接口和抽象类的必要性,并学习如何设计对象。 我正在使用 Java。 我发现了一个看起来很棒的课程,但它不是免费的(就像世界上所有美好的事物一样)。 https://course.ccs.neu.edu/cs3500/ 该课程推荐了《Effective Java》、《设计模式:可复用面向对象软件的基础》(GoF)、《Head First 设计模式》等书籍。但其中大部分书籍更像是风格指南。 我目前正处于一个不理解如何设计面向对象程序的阶段。我一直在疯狂地把所有代码都写在 Main 类里。 我需要一个详细的课程或书籍来学习这些,因为我是一个学习很慢的人。而且我这样做是为了乐趣,所以没有时间限制。 虽然有像 Grady Booch 和 Craig Larman 这样的书,但在我看来它们有点枯燥。但我可能会改变主意。
2作者: Tananon8 个月前
嘿,HN!我最近开源了 Pyversity,这是一个用于多样化检索结果的轻量级库。大多数检索系统只针对相关性进行优化,这可能导致 top-k 结果看起来几乎相同。Pyversity 可以高效地对结果进行重新排序,以平衡相关性和多样性,呈现那些仍然相关但冗余度较低的条目。这有助于改进检索、推荐和 RAG 管道,而不会增加延迟或复杂性。 主要特点: - 统一 API:一个函数 (diversify) 支持多种著名的策略:MMR、MSD、DPP 和 COVER(未来将支持更多) - 轻量级:唯一的依赖是 NumPy,保持软件包小巧且易于安装 - 快速:所有支持策略的高效实现;在毫秒内多样化结果 目前,使用交叉编码器进行重新排序非常流行,但也很昂贵。根据我的经验,您通常可以使用更简单、更快速的方法来改进检索结果,例如此软件包中实现的方法。这有助于检索、推荐和 RAG 系统呈现更丰富、信息更全面的结果,确保每个新条目都添加新信息。 代码和文档:github.com/pringled/pyversity 如果您有任何反馈或对其他要支持的多样化策略有建议,请告诉我!