History

Slightly tidy up vector_db code

Avoid panicking when truncating code with special chars

Kirill Bulatov committed 3 years ago

Commit a884bd71 parent 96abba22 files · +9 −10Browse files

Showing the changes to crates (2 of 2 files). Show all

Unified · Split

2 files
  1. crates/vector_store/src/embedding.rs +7 −5
  2. crates/vector_store/src/parsing.rs +2 −5
crates/vector_store/src/embedding.rs+7−5
@@ -67,11 +67,13 @@ impl EmbeddingProvider for DummyEmbeddings { · 66 unmodified lines
67 }67 }
68}68}
69 69
70const INPUT_LIMIT: usize = 8190;
71
70impl OpenAIEmbeddings {72impl OpenAIEmbeddings {
71 async fn truncate(span: String) -> String {73 fn truncate(span: String) -> String {
72 let mut tokens = OPENAI_BPE_TOKENIZER.encode_with_special_tokens(span.as_ref());74 let mut tokens = OPENAI_BPE_TOKENIZER.encode_with_special_tokens(span.as_ref());
73 if tokens.len() > 8190 {75 if tokens.len() > INPUT_LIMIT {
74 tokens.truncate(8190);76 tokens.truncate(INPUT_LIMIT);
75 let result = OPENAI_BPE_TOKENIZER.decode(tokens.clone());77 let result = OPENAI_BPE_TOKENIZER.decode(tokens.clone());
76 if result.is_ok() {78 if result.is_ok() {
77 let transformed = result.unwrap();79 let transformed = result.unwrap();
@@ -80,7 +82,7 @@ impl OpenAIEmbeddings { · 2 unmodified lines
80 }82 }
81 }83 }
82 84
83 return span.to_string();85 span
84 }86 }
85 87
86 async fn send_request(&self, api_key: &str, spans: Vec<&str>) -> Result<Response<AsyncBody>> {88 async fn send_request(&self, api_key: &str, spans: Vec<&str>) -> Result<Response<AsyncBody>> {
@@ -137,7 +139,7 @@ impl EmbeddingProvider for OpenAIEmbeddings { · 50 unmodified lines
137 // Don't worry about delaying bad request, as we can assume139 // Don't worry about delaying bad request, as we can assume
138 // we haven't been rate limited yet.140 // we haven't been rate limited yet.
139 for span in spans.iter_mut() {141 for span in spans.iter_mut() {
140 *span = Self::truncate(span.to_string()).await;142 *span = Self::truncate(span.to_string());
141 }143 }
142 }144 }
143 StatusCode::OK => {145 StatusCode::OK => {
crates/vector_store/src/parsing.rs+2−5
@@ -63,7 +63,7 @@ impl CodeContextRetriever { · 62 unmodified lines
63 ) {63 ) {
64 // log::info!("-----MATCH-----");64 // log::info!("-----MATCH-----");
65 65
66 let mut name: Vec<&str> = vec![];66 let mut name = Vec::new();
67 let mut item: Option<&str> = None;67 let mut item: Option<&str> = None;
68 let mut offset: Option<usize> = None;68 let mut offset: Option<usize> = None;
69 for capture in mat.captures {69 for capture in mat.captures {
@@ -91,11 +91,8 @@ impl CodeContextRetriever { · 21 unmodified lines
91 .replace("<language>", &pending_file.language.name().to_lowercase())91 .replace("<language>", &pending_file.language.name().to_lowercase())
92 .replace("<item>", item.unwrap());92 .replace("<item>", item.unwrap());
93 93
94 let mut truncated_span = context_span.clone();
95 truncated_span.truncate(100);
96
97 // log::info!("Name: {:?}", name);94 // log::info!("Name: {:?}", name);
98 // log::info!("Span: {:?}", truncated_span);95 // log::info!("Span: {:?}", util::truncate(&context_span, 100));
99 96
100 context_spans.push(context_span);97 context_spans.push(context_span);
101 documents.push(Document {98 documents.push(Document {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t