Encontrar

Pregunta
· 20 oct, 2024

IRIS SQL - query nested collection property

I'm experimenting with adapting SDA3 object model to store medical data in relational form, e.g.:

class Demo.DemoPatient extends (%Persistent, HS.SDA3.Patient) {}

The HS.SDA3.Patient class has the Aliases property which is a nested collection (list) of objects of type HS.SDA3.Name:

6 comentarios
Comentarios (6)1
Inicie sesión o regístrese para continuar
Comentarios (0)1
Inicie sesión o regístrese para continuar
Comentarios
· 19 oct, 2024

Using EnsLib.SQL.Operation.GenericOperation

In the past, I've created custom SQL operations, but now I had something trivial to do, so I decided to take EnsLib.SQL.Operation.GenericOperation out for a spin. There's no example in the docs, so it was a little tricky. Here's what I ended up doing:

In my external database, I have 'mytable' with two fields 'id1' and 'id2'. Here are the pertinent Business Operation settings:

SQL: select id2 from mytable where id1 = ?
Input Parameters: [1] *id1
RequestClass: Ens.StringRequest
ResponseClass: MyResponseClass

To look up 'id2' for the row where 'id1' is "abc", I set 'StringValue' of my request to a JSON string: {"id1":"abc"}

For the result, 'MyResponseClass' has one property 'id2', i.e. identical to my select clause. The way I read the docs, it should be possible to get the result back as JSON in an 'Ens.StreamContainer', but I couldn't get this to work. Has anybody else had better luck?

2 comentarios
Comentarios (2)2
Inicie sesión o regístrese para continuar
Artículo
· 19 oct, 2024 Lectura de 3 min

Mi aproximación personal a los vectores

Motivado por comentarios personales de @Edilson Eberle Carvalho  y una excelente
presentacion de @Michael Braam 
relacionada con la Búsqueda Vectorial me gustaría compartir
mi aproximación personal a los Vectores.

Cuando empecé y me encontré con vectores de 256, 384 y más de 1200 dimensiones, me sentí perdido.
Sin embargo mi ejemplo
Vector-inside-IRIS  - una simplificación de iris-vector-search  - funcionó bien.
 

Para entender la mecánica que hay detrás, he decidido empezar por pasos pequeños.
Nuestras 3 dimensiones comunes describen bastante bien nuestro mundo físico.
Incluso la media 4ª dimensión (sin negativos) añadida por Einstein no es difícil de seguir.
La teoría cosmológica de cuerdas con 0 a 11+ dimensiones era una verdadera frontera para mí.

Así que volvamos al principio : => 2 dimensiones son suficientes para un principiante.
Las coordenadas geográficas proporcionan un buen punto de partida con suficientes datos de prueba.
La función VECTOR_COSINE() fue mi objetivo principal en mi ejemplo de geo-vector-search

El rango de resultados de -1 a +1 es fácil de interpretar en un mapa proyectado casi plano.
Eso es matemática básica y su transposición a una dimensión adicional no es un milagro.

Pero, ¿qué pasa con un centenar de dimensiones

 

;#1
-.0104943, .01472898, .07107521, .07168121, -.0937807, .05828459, .04451195, -.1045385, -.0110124, -.0240547, -.0032111, -.0030188, -.0414225, -.1092015, .02203945, -.0129255, .14087346, .04734043, -.0181046, -.0458297, .02323769, .02859951, .01124321, .00857456, -.0049756, -.0144282, -.0846236, -.0284645, -.0147692, -.0989931, .04880870, .01899284, -.0176833, .04763242, -.0808972, -.0604988, .05757499, -.0638228, .04217084, .03707900, .03757081, .03086806, .02773610, .02082979, -.0495735, -.0337784, -.0438372, -.0827000, -.0018084, -.0072785, -.0797550, -.0055747, -.0551242, -.0918905, .01140710, -.0115834, -.0088469, -.0445509, .02972822, .04385065, .04125113, .01189815, .01809763
;#2
-.0340279, -.0930349, -.0356242, .03200291, .07393958, -.0164658, -.0218968, .01392244, -.0069597, .02677908, -.0800164, .07227557, -.0430033, -.1134698, -.0561500, -.0520939, -.0306403, .00750979, -.0345837, .03335380, -.0438071, -.0088005, .03423582, .00794844, .01172804, .05204785, .04179215, .01768089, -.0489745, -.0031708, -.0349655, -.0482467, .08090461, -.0596610, -.0565769, -.0043313, .01015284, .07152537, .04189436, -.0475862, -.0171517, .03899634, -.0705699, -.1133416, .08019342, .02138555, .01466019, .00184080, -.0905641, -.1039420, -.0290395, .02753796, .01674868, -.0259464, -.0107869, -.0407411, -.0120343, -.0636389, .00047146, .01514394, -.0694578, -.0204190, -.0024446
;#3
.00350692, .09432639, .01641871, .09951058, .10459023, .00019239, -.0823584, -.0022799, -.0227801, -.0023362, -.0397562, .07449327, -.1137044, .09173037, .08620572, -.0881805, -.0111093, -.0316556, -.0044012, -.1248759, -.0897788, .03191807, -.0147239, -.0198379, -.0849955, -.0026861, .02628867, -.0523788, -.0398543, -.0080245, .06736382, .01456158, .04700677, -.0171667, -.0217174, .06761254, -.0070750, .02879706, .01109632, .02541129, -.0384420, .00410159, .05145533, .06493697, -.0924961, -.0422163, -.0739539, .06107471, .06070494, -.0044191, .00238501, -.0182966, .03546700, .05925614, -.0361021, .09686610, .02930910, .01282224, .02953721, -.0526526, .03977891, .00501585, .00717564

El ejemplo de aquí arriba está acortado para facilitar la lectura

Después de pensarlo un rato he encontrado una imagen personal:

  • Cuando busco un objetivo en Google Maps que no está a la vuelta de la esquina se me ofrecen varias rutas.
  • la más corta, la más rápida, la que menos consume, transporte público, ... 
  • y elijo según mis necesidades
  • interpretando las dimensiones de mis vectores como pasos intermedios numerados hacia mi objetivo obtendría una imagen similar
  • Y mediante VECTOR_COSINE obtengo la mejor propuesta

Puede que los expertos en LLM se rían de mi simplificación.

Pero para mí, es una imagen que va más allá de las matemáticas abstractas y
las confusas teorías del lenguaje. Y creo que mi simple imagen basada en un proceso
de uso cotidiano en la conducción de automóviles ayuda a comprender
cómo se obtienen los resultados.

NOTA:
Aún no tengo ni idea de CÓMO se calculan esos vectores, siempre y cuando sea coherente.
Para mí era importante entender cómo funciona el emparejamiento. 

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 19 oct, 2024 Lectura de 4 min

A minha abordagem pessoal aos Vectores

Motivado pelo feedback pessoal de @Edilson Eberle Carvalho  e  uma excelente
apresentação de @Michael Braam relacionada com a Pesquisa Vetorial,
gostaria de partilhar a minha abordagem pessoal aos Vectores.

Quando comecei e encontrei vectores com 256, 384 e mais de 1200 dimensões - senti-me perdido.
No entanto, o meu exemplo Vector-inside-IRIS - uma simplificação da iris-vector-search - funcionou bem.

Para compreender a mecânica que lhe está subjacente, decidi começar por pequenos passos.
As nossas 3 dimensões comuns descrevem muito bem o nosso mundo físico. Mesmo
a meia quarta dimensão (sem negativos) acrescentada por Einstein não é muito difícil de compreender.
A teoria cosmológica das cordas com 0 a 11+ dimensões era para mim uma verdadeira fronteira.

Voltemos ao início: => 2 dimensões são suficientes para um principiante.
As coordenadas geográficas constituem um bom ponto de partida com dados de teste suficientes.
A função VECTOR_COSINE() foi o meu principal objetivo no meu exemplo de geo-vector-search

A gama de resultados de -1 a +1 é fácil de interpretar num mapa projetado quase plano.
Isto é matemática básica e a sua transposição para uma dimensão adicional não é um milagre.

Mas e quanto a algumas centenas de dimensões?

;#1
-.0104943, .01472898, .07107521, .07168121, -.0937807, .05828459, .04451195, -.1045385, -.0110124, -.0240547, -.0032111, -.0030188, -.0414225, -.1092015, .02203945, -.0129255, .14087346, .04734043, -.0181046, -.0458297, .02323769, .02859951, .01124321, .00857456, -.0049756, -.0144282, -.0846236, -.0284645, -.0147692, -.0989931, .04880870, .01899284, -.0176833, .04763242, -.0808972, -.0604988, .05757499, -.0638228, .04217084, .03707900, .03757081, .03086806, .02773610, .02082979, -.0495735, -.0337784, -.0438372, -.0827000, -.0018084, -.0072785, -.0797550, -.0055747, -.0551242, -.0918905, .01140710, -.0115834, -.0088469, -.0445509, .02972822, .04385065, .04125113, .01189815, .01809763
;#2
-.0340279, -.0930349, -.0356242, .03200291, .07393958, -.0164658, -.0218968, .01392244, -.0069597, .02677908, -.0800164, .07227557, -.0430033, -.1134698, -.0561500, -.0520939, -.0306403, .00750979, -.0345837, .03335380, -.0438071, -.0088005, .03423582, .00794844, .01172804, .05204785, .04179215, .01768089, -.0489745, -.0031708, -.0349655, -.0482467, .08090461, -.0596610, -.0565769, -.0043313, .01015284, .07152537, .04189436, -.0475862, -.0171517, .03899634, -.0705699, -.1133416, .08019342, .02138555, .01466019, .00184080, -.0905641, -.1039420, -.0290395, .02753796, .01674868, -.0259464, -.0107869, -.0407411, -.0120343, -.0636389, .00047146, .01514394, -.0694578, -.0204190, -.0024446
;#3
.00350692, .09432639, .01641871, .09951058, .10459023, .00019239, -.0823584, -.0022799, -.0227801, -.0023362, -.0397562, .07449327, -.1137044, .09173037, .08620572, -.0881805, -.0111093, -.0316556, -.0044012, -.1248759, -.0897788, .03191807, -.0147239, -.0198379, -.0849955, -.0026861, .02628867, -.0523788, -.0398543, -.0080245, .06736382, .01456158, .04700677, -.0171667, -.0217174, .06761254, -.0070750, .02879706, .01109632, .02541129, -.0384420, .00410159, .05145533, .06493697, -.0924961, -.0422163, -.0739539, .06107471, .06070494, -.0044191, .00238501, -.0182966, .03546700, .05925614, -.0361021, .09686610, .02930910, .01282224, .02953721, -.0526526, .03977891, .00501585, .00717564

O exemplo aqui em cima foi encurtado para facilitar a leitura

Depois de pensar durante algum tempo, encontrei uma imagem pessoal:

  • Quando procuro um objetivo no Google Maps que não seja mesmo ao virar da esquina, recebo uma escolha de percursos.
  • O mais curto, o mais rápido, o que consome menos combustível, os transportes públicos, ... 
  • e faço uma escolha de acordo com as minhas necessidades
  • interpretando as dimensões dos meus vectores como passos intermédios numerados até ao meu objetivo, obteria uma imagem semelhante
  • E com VECTOR_COSINE obtenho a melhor proposta

Os especialistas em LLM podem rir-se da minha simplificação.
Mas, para mim, é uma imagem que ultrapassa a matemática abstrata e as teorias linguísticas confusas.
E acredito que a minha imagem simples, baseada num processo usado diariamente na condução
de um automóvel ajuda a compreender como os resultados são encontrados.

NOTA:
Ainda não faço ideia de COMO esses vectores são calculados, desde que sejam consistentes.
Era importante para mim perceber como funciona a correspondência. 

Comentarios (0)1
Inicie sesión o regístrese para continuar