Add a slash command for automatically retrieving relevant context (#17972)
* [x] put this slash command behind a feature flag until we release embedding access to the general population * [x] choose a name for this slash command and name the rust module to match Release Notes: - N/A --------- Co-authored-by: Jason <jason@zed.dev> Co-authored-by: Richard <richard@zed.dev> Co-authored-by: Jason Mancuso <7891333+jvmncs@users.noreply.github.com> Co-authored-by: Richard Feldman <oss@rtfeldman.com>
This commit is contained in:
parent
5905fbb9ac
commit
e309fbda2a
14 changed files with 683 additions and 223 deletions
|
@ -42,14 +42,23 @@ impl Embedding {
|
|||
self.0.len()
|
||||
}
|
||||
|
||||
pub fn similarity(self, other: &Embedding) -> f32 {
|
||||
debug_assert_eq!(self.0.len(), other.0.len());
|
||||
self.0
|
||||
pub fn similarity(&self, others: &[Embedding]) -> (f32, usize) {
|
||||
debug_assert!(others.iter().all(|other| self.0.len() == other.0.len()));
|
||||
others
|
||||
.iter()
|
||||
.copied()
|
||||
.zip(other.0.iter().copied())
|
||||
.map(|(a, b)| a * b)
|
||||
.sum()
|
||||
.enumerate()
|
||||
.map(|(index, other)| {
|
||||
let dot_product: f32 = self
|
||||
.0
|
||||
.iter()
|
||||
.copied()
|
||||
.zip(other.0.iter().copied())
|
||||
.map(|(a, b)| a * b)
|
||||
.sum();
|
||||
(dot_product, index)
|
||||
})
|
||||
.max_by(|a, b| a.0.partial_cmp(&b.0).unwrap_or(std::cmp::Ordering::Equal))
|
||||
.unwrap_or((0.0, 0))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue